Commit c3dc4be0f106ceebfb4a3bf734020cb15fc44d68
1 parent
76ba366c
Exists in
master
and in
1 other branch
feat✨:房间排行活动:操作日志记录到数据库
Showing
8 changed files
with
147 additions
and
50 deletions
Show diff stats
routers/router.go
| ... | ... | @@ -29,7 +29,7 @@ func init() { |
| 29 | 29 | beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") |
| 30 | 30 | // 领取上期结算奖励 |
| 31 | 31 | beego.Router(prefix+"/roomrank/getsettleaward", &controllers.RoomRankController{}, "post:GetSettleAward") |
| 32 | - // 房间排行增加积分 | |
| 32 | + // 增加积分 | |
| 33 | 33 | beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore") |
| 34 | 34 | |
| 35 | 35 | beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") | ... | ... |
service-common/svconst/mysql.go
| ... | ... | @@ -17,7 +17,9 @@ const ( |
| 17 | 17 | MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM = "s_cardholder_record_rewardalbum" // 开卡包活动日志领取卡组奖励 |
| 18 | 18 | MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround" // 开卡包活动日志领取轮次奖励 |
| 19 | 19 | |
| 20 | - MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_beach_rank_activity" // 房间排行活动配置 | |
| 21 | - MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player" // 房间排行玩家数据 | |
| 22 | - MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room" // 房间排行房间数据 | |
| 20 | + MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_beach_rank_activity" // 房间排行活动配置 | |
| 21 | + MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player" // 房间排行玩家数据 | |
| 22 | + MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room" // 房间排行房间数据 | |
| 23 | + MYSQL_TABLE_S_ROOMRANK_RECORD_SETTLEAWARD = "s_roomrank_record_getsettleaward" // 房间排行领取上期结算奖励 | |
| 24 | + MYSQL_TABLE_S_ROOMRANK_RECORD_ADDSCORE = "s_roomrank_record_addscore" // 房间排行增加积分 | |
| 23 | 25 | ) | ... | ... |
service/cardholder/dto-record.go
| ... | ... | @@ -7,8 +7,8 @@ import ( |
| 7 | 7 | "fmt" |
| 8 | 8 | ) |
| 9 | 9 | |
| 10 | -// RecordCardHolderBase 开卡包活动日志公共 | |
| 11 | -type RecordCardHolderBase struct { | |
| 10 | +// RecordBase 日志公共 | |
| 11 | +type RecordBase struct { | |
| 12 | 12 | Id int64 `gorm:"primaryKey;comment:日志ID"` |
| 13 | 13 | Uid int64 `gorm:"comment:玩家唯一ID"` |
| 14 | 14 | SequenceId string `gorm:"type:varchar(255);comment:用户序列组ID"` |
| ... | ... | @@ -19,9 +19,9 @@ type RecordCardHolderBase struct { |
| 19 | 19 | UpdateTime int64 `gorm:"comment:修改时间戳"` |
| 20 | 20 | } |
| 21 | 21 | |
| 22 | -func NewRecordCardHolderBase(uid int64, sequenceId string, cohort string, activityId int64, round int) RecordCardHolderBase { | |
| 22 | +func NewRecordBase(uid int64, sequenceId string, cohort string, activityId int64, round int) RecordBase { | |
| 23 | 23 | secNow := lxtime.NowUninx() |
| 24 | - return RecordCardHolderBase{ | |
| 24 | + return RecordBase{ | |
| 25 | 25 | CreateTime: secNow, |
| 26 | 26 | UpdateTime: secNow, |
| 27 | 27 | Uid: uid, |
| ... | ... | @@ -32,15 +32,15 @@ func NewRecordCardHolderBase(uid int64, sequenceId string, cohort string, activi |
| 32 | 32 | } |
| 33 | 33 | } |
| 34 | 34 | |
| 35 | -// RecordCardHolderOpen 开卡包活动日志开卡包 | |
| 36 | -type RecordCardHolderOpen struct { | |
| 37 | - RecordCardHolderBase | |
| 35 | +// RecordOpen 打开卡包 | |
| 36 | +type RecordOpen struct { | |
| 37 | + RecordBase | |
| 38 | 38 | OpenMode int `gorm:"comment:开包类型0客户端驱动1星星商店购买2剩余星星兑换"` |
| 39 | 39 | CardholderId int `gorm:"comment:卡包ID"` |
| 40 | 40 | CardList string `gorm:"type:varchar(255);comment:开卡内容"` |
| 41 | 41 | } |
| 42 | 42 | |
| 43 | -func (d *RecordCardHolderOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 43 | +func (d *RecordOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 44 | 44 | tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN |
| 45 | 45 | return &svmysql.MysqlInfo{ |
| 46 | 46 | DbMysql: svconst.DbCommon, |
| ... | ... | @@ -48,24 +48,24 @@ func (d *RecordCardHolderOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { |
| 48 | 48 | } |
| 49 | 49 | } |
| 50 | 50 | |
| 51 | -func NewRecordCardHolderOpen(recordBase RecordCardHolderBase, | |
| 52 | - openMode int, cardholderId int, cardList string) *RecordCardHolderOpen { | |
| 53 | - return &RecordCardHolderOpen{ | |
| 54 | - RecordCardHolderBase: recordBase, | |
| 55 | - OpenMode: openMode, | |
| 56 | - CardholderId: cardholderId, | |
| 57 | - CardList: cardList, | |
| 51 | +func NewRecordOpen(recordBase RecordBase, | |
| 52 | + openMode int, cardholderId int, cardList string) *RecordOpen { | |
| 53 | + return &RecordOpen{ | |
| 54 | + RecordBase: recordBase, | |
| 55 | + OpenMode: openMode, | |
| 56 | + CardholderId: cardholderId, | |
| 57 | + CardList: cardList, | |
| 58 | 58 | } |
| 59 | 59 | } |
| 60 | 60 | |
| 61 | -// RecordCardHolderRewardAlbum 开卡包活动日志领取卡组奖励 | |
| 62 | -type RecordCardHolderRewardAlbum struct { | |
| 63 | - RecordCardHolderBase | |
| 61 | +// RecordRewardAlbum 领取卡组奖励 | |
| 62 | +type RecordRewardAlbum struct { | |
| 63 | + RecordBase | |
| 64 | 64 | AlbumId int `gorm:"comment:卡组ID"` |
| 65 | 65 | Award string `gorm:"type:varchar(255);comment:奖励内容"` |
| 66 | 66 | } |
| 67 | 67 | |
| 68 | -func (d *RecordCardHolderRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 68 | +func (d *RecordRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 69 | 69 | tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM |
| 70 | 70 | return &svmysql.MysqlInfo{ |
| 71 | 71 | DbMysql: svconst.DbCommon, |
| ... | ... | @@ -73,22 +73,22 @@ func (d *RecordCardHolderRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInf |
| 73 | 73 | } |
| 74 | 74 | } |
| 75 | 75 | |
| 76 | -func NewRecordCardHolderRewardAlbum(recordBase RecordCardHolderBase, | |
| 77 | - albumId int, award string) *RecordCardHolderRewardAlbum { | |
| 78 | - return &RecordCardHolderRewardAlbum{ | |
| 79 | - RecordCardHolderBase: recordBase, | |
| 80 | - AlbumId: albumId, | |
| 81 | - Award: award, | |
| 76 | +func NewRecordRewardAlbum(recordBase RecordBase, | |
| 77 | + albumId int, award string) *RecordRewardAlbum { | |
| 78 | + return &RecordRewardAlbum{ | |
| 79 | + RecordBase: recordBase, | |
| 80 | + AlbumId: albumId, | |
| 81 | + Award: award, | |
| 82 | 82 | } |
| 83 | 83 | } |
| 84 | 84 | |
| 85 | -// RecordCardHolderRewardRound 开卡包活动日志领取轮次奖励 | |
| 86 | -type RecordCardHolderRewardRound struct { | |
| 87 | - RecordCardHolderBase | |
| 85 | +// RecordRewardRound 领取轮次奖励 | |
| 86 | +type RecordRewardRound struct { | |
| 87 | + RecordBase | |
| 88 | 88 | Award string `gorm:"type:varchar(255);comment:奖励内容"` |
| 89 | 89 | } |
| 90 | 90 | |
| 91 | -func (d *RecordCardHolderRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 91 | +func (d *RecordRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 92 | 92 | tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND |
| 93 | 93 | return &svmysql.MysqlInfo{ |
| 94 | 94 | DbMysql: svconst.DbCommon, |
| ... | ... | @@ -96,10 +96,10 @@ func (d *RecordCardHolderRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInf |
| 96 | 96 | } |
| 97 | 97 | } |
| 98 | 98 | |
| 99 | -func NewRecordCardHolderRewardRound(recordBase RecordCardHolderBase, | |
| 100 | - award string) *RecordCardHolderRewardRound { | |
| 101 | - return &RecordCardHolderRewardRound{ | |
| 102 | - RecordCardHolderBase: recordBase, | |
| 103 | - Award: award, | |
| 99 | +func NewRecordRewardRound(recordBase RecordBase, | |
| 100 | + award string) *RecordRewardRound { | |
| 101 | + return &RecordRewardRound{ | |
| 102 | + RecordBase: recordBase, | |
| 103 | + Award: award, | |
| 104 | 104 | } |
| 105 | 105 | } | ... | ... |
service/cardholder/logic.go
| ... | ... | @@ -40,7 +40,7 @@ func CheckGameData(d *Player, conf *confcardholder.ActivityConfig) string { |
| 40 | 40 | |
| 41 | 41 | // GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort) |
| 42 | 42 | func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) { |
| 43 | - // todo 这里后续要对接 | |
| 43 | + // todo 这里后续要对接 用户序列组ID(sequenceId) 用户分组(cohort) | |
| 44 | 44 | sequenceId = "1" |
| 45 | 45 | cohort = "1" |
| 46 | 46 | return |
| ... | ... | @@ -195,8 +195,8 @@ func DoOpen(gameId string, |
| 195 | 195 | } |
| 196 | 196 | // 记录开卡包日志 |
| 197 | 197 | { |
| 198 | - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 199 | - _ = svmysql.Create(NewRecordCardHolderOpen(recordBase, | |
| 198 | + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 199 | + _ = svmysql.Create(NewRecordOpen(recordBase, | |
| 200 | 200 | openMode, utstring.StringToInt(confCardholder.Id), zjson.Str(newCards)), |
| 201 | 201 | gameId) |
| 202 | 202 | } |
| ... | ... | @@ -244,8 +244,8 @@ func DoOpenCheckAward(gameId string, |
| 244 | 244 | awardAlbum[albumId] = award |
| 245 | 245 | { |
| 246 | 246 | // 记录日志 |
| 247 | - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 248 | - _ = svmysql.Create(NewRecordCardHolderRewardAlbum(recordBase, | |
| 247 | + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 248 | + _ = svmysql.Create(NewRecordRewardAlbum(recordBase, | |
| 249 | 249 | albumId, award), |
| 250 | 250 | gameId) |
| 251 | 251 | } |
| ... | ... | @@ -256,8 +256,8 @@ func DoOpenCheckAward(gameId string, |
| 256 | 256 | awardRound = config.Awards[utstring.IntToString(player.Details.Round)] |
| 257 | 257 | |
| 258 | 258 | // 记录日志 |
| 259 | - recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 260 | - _ = svmysql.Create(NewRecordCardHolderRewardRound(recordBase, | |
| 259 | + recordBase := NewRecordBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) | |
| 260 | + _ = svmysql.Create(NewRecordRewardRound(recordBase, | |
| 261 | 261 | awardRound), |
| 262 | 262 | gameId) |
| 263 | 263 | ... | ... |
service/init.go
| ... | ... | @@ -13,13 +13,15 @@ func Init() { |
| 13 | 13 | // 卡牌卡包 |
| 14 | 14 | for _, gameId := range svconst.GameListCardHolder { |
| 15 | 15 | svmysql.InitTable(new(cardholder.Player), gameId, true) |
| 16 | - svmysql.InitTable(new(cardholder.RecordCardHolderOpen), gameId, true) | |
| 17 | - svmysql.InitTable(new(cardholder.RecordCardHolderRewardAlbum), gameId, true) | |
| 18 | - svmysql.InitTable(new(cardholder.RecordCardHolderRewardRound), gameId, true) | |
| 16 | + svmysql.InitTable(new(cardholder.RecordOpen), gameId, true) | |
| 17 | + svmysql.InitTable(new(cardholder.RecordRewardAlbum), gameId, true) | |
| 18 | + svmysql.InitTable(new(cardholder.RecordRewardRound), gameId, true) | |
| 19 | 19 | } |
| 20 | 20 | // 房间排行 |
| 21 | 21 | for _, gameId := range svconst.GameListRoomRank { |
| 22 | 22 | svmysql.InitTable(new(roomrank.Player), gameId, true) |
| 23 | + svmysql.InitTable(new(roomrank.RecordGetSettleAward), gameId, true) | |
| 24 | + svmysql.InitTable(new(roomrank.RecordAddScore), gameId, true) | |
| 23 | 25 | } |
| 24 | 26 | |
| 25 | 27 | } | ... | ... |
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | +package roomrank | |
| 2 | + | |
| 3 | +import ( | |
| 4 | + "apigame/service-common/svconst" | |
| 5 | + "apigame/service-common/svmysql" | |
| 6 | + "apigame/util/util-lx/lxtime" | |
| 7 | + "fmt" | |
| 8 | +) | |
| 9 | + | |
| 10 | +// RecordBase 日志公共 | |
| 11 | +type RecordBase struct { | |
| 12 | + Id int64 `gorm:"primaryKey;comment:日志ID"` | |
| 13 | + Uid int64 `gorm:"comment:玩家唯一ID"` | |
| 14 | + ActivityId int64 `gorm:"comment:当前活动ID"` | |
| 15 | + CreateTime int64 `gorm:"comment:创建时间戳"` | |
| 16 | + UpdateTime int64 `gorm:"comment:修改时间戳"` | |
| 17 | +} | |
| 18 | + | |
| 19 | +func NewRecordBase(uid int64, activityId int64) RecordBase { | |
| 20 | + secNow := lxtime.NowUninx() | |
| 21 | + return RecordBase{ | |
| 22 | + CreateTime: secNow, | |
| 23 | + UpdateTime: secNow, | |
| 24 | + Uid: uid, | |
| 25 | + ActivityId: activityId, | |
| 26 | + } | |
| 27 | +} | |
| 28 | + | |
| 29 | +// RecordGetSettleAward 领取上期结算奖励 | |
| 30 | +type RecordGetSettleAward struct { | |
| 31 | + RecordBase | |
| 32 | + Award string `gorm:"type:varchar(255);comment:奖励内容"` | |
| 33 | +} | |
| 34 | + | |
| 35 | +func (d *RecordGetSettleAward) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 36 | + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_RECORD_SETTLEAWARD | |
| 37 | + return &svmysql.MysqlInfo{ | |
| 38 | + DbMysql: svconst.DbCommon, | |
| 39 | + TableName: fmt.Sprintf("%s_%s", tableName, suffix), | |
| 40 | + } | |
| 41 | +} | |
| 42 | + | |
| 43 | +func NewRecordGetSettleAward(recordBase RecordBase, | |
| 44 | + award string) *RecordGetSettleAward { | |
| 45 | + return &RecordGetSettleAward{ | |
| 46 | + RecordBase: recordBase, | |
| 47 | + Award: award, | |
| 48 | + } | |
| 49 | +} | |
| 50 | + | |
| 51 | +// RecordAddScore 房间排行增加积分 | |
| 52 | +type RecordAddScore struct { | |
| 53 | + RecordBase | |
| 54 | + AddScore int64 `gorm:"comment:增加积分"` | |
| 55 | + OldScore int64 `gorm:"comment:旧积分"` | |
| 56 | + NewScore int64 `gorm:"comment:新积分"` | |
| 57 | +} | |
| 58 | + | |
| 59 | +func (d *RecordAddScore) MysqlInfo(suffix string) *svmysql.MysqlInfo { | |
| 60 | + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_RECORD_ADDSCORE | |
| 61 | + return &svmysql.MysqlInfo{ | |
| 62 | + DbMysql: svconst.DbCommon, | |
| 63 | + TableName: fmt.Sprintf("%s_%s", tableName, suffix), | |
| 64 | + } | |
| 65 | +} | |
| 66 | + | |
| 67 | +func NewRecordAddScore(recordBase RecordBase, | |
| 68 | + addScore, oldScore, newScore int64) *RecordAddScore { | |
| 69 | + return &RecordAddScore{ | |
| 70 | + RecordBase: recordBase, | |
| 71 | + AddScore: addScore, | |
| 72 | + OldScore: oldScore, | |
| 73 | + NewScore: newScore, | |
| 74 | + } | |
| 75 | +} | ... | ... |
service/roomrank/handle.go
| ... | ... | @@ -3,6 +3,7 @@ package roomrank |
| 3 | 3 | import ( |
| 4 | 4 | "apigame/configs/confroomrank" |
| 5 | 5 | "apigame/models" |
| 6 | + "apigame/service-common/svmysql" | |
| 6 | 7 | "apigame/service/code-msg" |
| 7 | 8 | "fmt" |
| 8 | 9 | ) |
| ... | ... | @@ -112,6 +113,7 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r |
| 112 | 113 | code = code_msg.RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR |
| 113 | 114 | return |
| 114 | 115 | } |
| 116 | + oldActivityId := player.ActivityId | |
| 115 | 117 | |
| 116 | 118 | // 领取奖励 |
| 117 | 119 | rsp.AwardText = player.SettleAward |
| ... | ... | @@ -119,6 +121,12 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r |
| 119 | 121 | player.SettleAward = "" |
| 120 | 122 | SavePlayer(gameId, player) |
| 121 | 123 | |
| 124 | + // 记录日志 | |
| 125 | + recordBase := NewRecordBase(player.Uid, oldActivityId) | |
| 126 | + _ = svmysql.Create(NewRecordGetSettleAward(recordBase, | |
| 127 | + rsp.AwardText), | |
| 128 | + gameId) | |
| 129 | + | |
| 122 | 130 | return |
| 123 | 131 | } |
| 124 | 132 | |
| ... | ... | @@ -164,7 +172,7 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs |
| 164 | 172 | room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) |
| 165 | 173 | |
| 166 | 174 | // 房间排行增加积分 |
| 167 | - ChangePlayerScore(room, player, req.AddScore) | |
| 175 | + oldScore, newScore := ChangePlayerScore(room, player, req.AddScore) | |
| 168 | 176 | |
| 169 | 177 | if hasRoom { |
| 170 | 178 | TryReSort(room, config) |
| ... | ... | @@ -175,5 +183,11 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs |
| 175 | 183 | |
| 176 | 184 | rsp.RoomRankInfo = GetInfoFromRoom(player, room) |
| 177 | 185 | |
| 186 | + // 记录日志 | |
| 187 | + recordBase := NewRecordBase(player.Uid, config.Id) | |
| 188 | + _ = svmysql.Create(NewRecordAddScore(recordBase, | |
| 189 | + req.AddScore, oldScore, newScore), | |
| 190 | + gameId) | |
| 191 | + | |
| 178 | 192 | return |
| 179 | 193 | } | ... | ... |
service/roomrank/logic.go
| ... | ... | @@ -55,11 +55,15 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi |
| 55 | 55 | } |
| 56 | 56 | |
| 57 | 57 | // ChangePlayerScore 房间排行增加积分 |
| 58 | -func ChangePlayerScore(room *Room, player *Player, addScore int64) { | |
| 58 | +func ChangePlayerScore(room *Room, player *Player, addScore int64) (oldScore, newScore int64) { | |
| 59 | 59 | for i := 0; i < len(room.Details.Players); i++ { |
| 60 | 60 | p := room.Details.Players[i] |
| 61 | 61 | if player.Uid == p.Uid { |
| 62 | + oldScore = p.Score | |
| 62 | 63 | p.Score += addScore |
| 64 | + newScore = p.Score | |
| 65 | + return | |
| 63 | 66 | } |
| 64 | 67 | } |
| 68 | + return | |
| 65 | 69 | } | ... | ... |