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 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 }
... ...
service/roomrank/dto-record.go 0 → 100644
... ... @@ -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 }
... ...