Commit c3dc4be0f106ceebfb4a3bf734020cb15fc44d68

Authored by 王家文
1 parent 76ba366c
Exists in master and in 1 other branch dev-wjw

feat✨:房间排行活动:操作日志记录到数据库

routers/router.go
@@ -29,7 +29,7 @@ func init() { @@ -29,7 +29,7 @@ func init() {
29 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") 29 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info")
30 // 领取上期结算奖励 30 // 领取上期结算奖励
31 beego.Router(prefix+"/roomrank/getsettleaward", &controllers.RoomRankController{}, "post:GetSettleAward") 31 beego.Router(prefix+"/roomrank/getsettleaward", &controllers.RoomRankController{}, "post:GetSettleAward")
32 - // 房间排行增加积分 32 + // 增加积分
33 beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore") 33 beego.Router(prefix+"/roomrank/addscore", &controllers.RoomRankController{}, "post:AddScore")
34 34
35 beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") 35 beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo")
service-common/svconst/mysql.go
@@ -17,7 +17,9 @@ const ( @@ -17,7 +17,9 @@ const (
17 MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM = "s_cardholder_record_rewardalbum" // 开卡包活动日志领取卡组奖励 17 MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM = "s_cardholder_record_rewardalbum" // 开卡包活动日志领取卡组奖励
18 MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround" // 开卡包活动日志领取轮次奖励 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,8 +7,8 @@ import (
7 "fmt" 7 "fmt"
8 ) 8 )
9 9
10 -// RecordCardHolderBase 开卡包活动日志公共  
11 -type RecordCardHolderBase struct { 10 +// RecordBase 日志公共
  11 +type RecordBase struct {
12 Id int64 `gorm:"primaryKey;comment:日志ID"` 12 Id int64 `gorm:"primaryKey;comment:日志ID"`
13 Uid int64 `gorm:"comment:玩家唯一ID"` 13 Uid int64 `gorm:"comment:玩家唯一ID"`
14 SequenceId string `gorm:"type:varchar(255);comment:用户序列组ID"` 14 SequenceId string `gorm:"type:varchar(255);comment:用户序列组ID"`
@@ -19,9 +19,9 @@ type RecordCardHolderBase struct { @@ -19,9 +19,9 @@ type RecordCardHolderBase struct {
19 UpdateTime int64 `gorm:"comment:修改时间戳"` 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 secNow := lxtime.NowUninx() 23 secNow := lxtime.NowUninx()
24 - return RecordCardHolderBase{ 24 + return RecordBase{
25 CreateTime: secNow, 25 CreateTime: secNow,
26 UpdateTime: secNow, 26 UpdateTime: secNow,
27 Uid: uid, 27 Uid: uid,
@@ -32,15 +32,15 @@ func NewRecordCardHolderBase(uid int64, sequenceId string, cohort string, activi @@ -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 OpenMode int `gorm:"comment:开包类型0客户端驱动1星星商店购买2剩余星星兑换"` 38 OpenMode int `gorm:"comment:开包类型0客户端驱动1星星商店购买2剩余星星兑换"`
39 CardholderId int `gorm:"comment:卡包ID"` 39 CardholderId int `gorm:"comment:卡包ID"`
40 CardList string `gorm:"type:varchar(255);comment:开卡内容"` 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 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN 44 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_OPEN
45 return &svmysql.MysqlInfo{ 45 return &svmysql.MysqlInfo{
46 DbMysql: svconst.DbCommon, 46 DbMysql: svconst.DbCommon,
@@ -48,24 +48,24 @@ func (d *RecordCardHolderOpen) MysqlInfo(suffix string) *svmysql.MysqlInfo { @@ -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 AlbumId int `gorm:"comment:卡组ID"` 64 AlbumId int `gorm:"comment:卡组ID"`
65 Award string `gorm:"type:varchar(255);comment:奖励内容"` 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 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM 69 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDALBUM
70 return &svmysql.MysqlInfo{ 70 return &svmysql.MysqlInfo{
71 DbMysql: svconst.DbCommon, 71 DbMysql: svconst.DbCommon,
@@ -73,22 +73,22 @@ func (d *RecordCardHolderRewardAlbum) MysqlInfo(suffix string) *svmysql.MysqlInf @@ -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 Award string `gorm:"type:varchar(255);comment:奖励内容"` 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 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND 92 tableName := svconst.MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND
93 return &svmysql.MysqlInfo{ 93 return &svmysql.MysqlInfo{
94 DbMysql: svconst.DbCommon, 94 DbMysql: svconst.DbCommon,
@@ -96,10 +96,10 @@ func (d *RecordCardHolderRewardRound) MysqlInfo(suffix string) *svmysql.MysqlInf @@ -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,7 +40,7 @@ func CheckGameData(d *Player, conf *confcardholder.ActivityConfig) string {
40 40
41 // GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort) 41 // GetUserSequenceIdAndCohort 获取 用户序列组ID(sequenceId) 用户分组(cohort)
42 func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) { 42 func GetUserSequenceIdAndCohort(uid int64) (sequenceId, cohort string) {
43 - // todo 这里后续要对接 43 + // todo 这里后续要对接 用户序列组ID(sequenceId) 用户分组(cohort)
44 sequenceId = "1" 44 sequenceId = "1"
45 cohort = "1" 45 cohort = "1"
46 return 46 return
@@ -195,8 +195,8 @@ func DoOpen(gameId string, @@ -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 openMode, utstring.StringToInt(confCardholder.Id), zjson.Str(newCards)), 200 openMode, utstring.StringToInt(confCardholder.Id), zjson.Str(newCards)),
201 gameId) 201 gameId)
202 } 202 }
@@ -244,8 +244,8 @@ func DoOpenCheckAward(gameId string, @@ -244,8 +244,8 @@ func DoOpenCheckAward(gameId string,
244 awardAlbum[albumId] = award 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 albumId, award), 249 albumId, award),
250 gameId) 250 gameId)
251 } 251 }
@@ -256,8 +256,8 @@ func DoOpenCheckAward(gameId string, @@ -256,8 +256,8 @@ func DoOpenCheckAward(gameId string,
256 awardRound = config.Awards[utstring.IntToString(player.Details.Round)] 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 awardRound), 261 awardRound),
262 gameId) 262 gameId)
263 263
service/init.go
@@ -13,13 +13,15 @@ func Init() { @@ -13,13 +13,15 @@ func Init() {
13 // 卡牌卡包 13 // 卡牌卡包
14 for _, gameId := range svconst.GameListCardHolder { 14 for _, gameId := range svconst.GameListCardHolder {
15 svmysql.InitTable(new(cardholder.Player), gameId, true) 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 for _, gameId := range svconst.GameListRoomRank { 21 for _, gameId := range svconst.GameListRoomRank {
22 svmysql.InitTable(new(roomrank.Player), gameId, true) 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 }
service/roomrank/dto-record.go 0 → 100644
@@ -0,0 +1,75 @@ @@ -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,6 +3,7 @@ package roomrank
3 import ( 3 import (
4 "apigame/configs/confroomrank" 4 "apigame/configs/confroomrank"
5 "apigame/models" 5 "apigame/models"
  6 + "apigame/service-common/svmysql"
6 "apigame/service/code-msg" 7 "apigame/service/code-msg"
7 "fmt" 8 "fmt"
8 ) 9 )
@@ -112,6 +113,7 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r @@ -112,6 +113,7 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r
112 code = code_msg.RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR 113 code = code_msg.RECODE_MERGE_ROOMRANK_NOTHASSETTLE_ERROR
113 return 114 return
114 } 115 }
  116 + oldActivityId := player.ActivityId
115 117
116 // 领取奖励 118 // 领取奖励
117 rsp.AwardText = player.SettleAward 119 rsp.AwardText = player.SettleAward
@@ -119,6 +121,12 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r @@ -119,6 +121,12 @@ func HandleGetSettleAward(req *models.ReqRoomRankGetSettleAward) (code string, r
119 player.SettleAward = "" 121 player.SettleAward = ""
120 SavePlayer(gameId, player) 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 return 130 return
123 } 131 }
124 132
@@ -164,7 +172,7 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs @@ -164,7 +172,7 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs
164 room, hasRoom := TryGetRoom(gameId, player, config, playerLevel) 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 if hasRoom { 177 if hasRoom {
170 TryReSort(room, config) 178 TryReSort(room, config)
@@ -175,5 +183,11 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs @@ -175,5 +183,11 @@ func HandleAddScore(req *models.ReqRoomRankAddScore) (code string, rsp models.Rs
175 183
176 rsp.RoomRankInfo = GetInfoFromRoom(player, room) 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 return 192 return
179 } 193 }
service/roomrank/logic.go
@@ -55,11 +55,15 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi @@ -55,11 +55,15 @@ func TrySettle(gameId string, player *Player, config *confroomrank.ActivityConfi
55 } 55 }
56 56
57 // ChangePlayerScore 房间排行增加积分 57 // ChangePlayerScore 房间排行增加积分
58 -func ChangePlayerScore(room *Room, player *Player, addScore int64) { 58 +func ChangePlayerScore(room *Room, player *Player, addScore int64) (oldScore, newScore int64) {
59 for i := 0; i < len(room.Details.Players); i++ { 59 for i := 0; i < len(room.Details.Players); i++ {
60 p := room.Details.Players[i] 60 p := room.Details.Players[i]
61 if player.Uid == p.Uid { 61 if player.Uid == p.Uid {
  62 + oldScore = p.Score
62 p.Score += addScore 63 p.Score += addScore
  64 + newScore = p.Score
  65 + return
63 } 66 }
64 } 67 }
  68 + return
65 } 69 }