Commit d560457316538aefd06bdba4cf3a821b4fef7db6
1 parent
27cc372e
Exists in
master
and in
1 other branch
feat✨:房间排行活动基本框架
Showing
11 changed files
with
136 additions
and
22 deletions
Show diff stats
| @@ -0,0 +1,32 @@ | @@ -0,0 +1,32 @@ | ||
| 1 | +package controllers | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/models" | ||
| 5 | + "apigame/service/code-msg" | ||
| 6 | + "apigame/service/roomrank" | ||
| 7 | + "fmt" | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +// DemoController 绑定控制器 | ||
| 11 | +type DemoController struct { | ||
| 12 | + BaseController | ||
| 13 | +} | ||
| 14 | + | ||
| 15 | +// Demo demo | ||
| 16 | +func (c *DemoController) Demo() { | ||
| 17 | + req := new(models.ReqDemo) | ||
| 18 | + if !c.GetPostData(req) { | ||
| 19 | + return | ||
| 20 | + } | ||
| 21 | + rsp := models.RspDemo{} | ||
| 22 | + | ||
| 23 | + fmt.Println("DemoController.demo") | ||
| 24 | + | ||
| 25 | + { | ||
| 26 | + room := &roomrank.DataRoomRankRoom{Uid: req.UID, ActivityId: 1} | ||
| 27 | + roomrank.SaveRoom(req.GameID, room) | ||
| 28 | + fmt.Println(room.Id) | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | + c.RetRspCodeData(code_msg.RECODE_OK, rsp) | ||
| 32 | +} |
routers/router.go
| @@ -28,5 +28,6 @@ func init() { | @@ -28,5 +28,6 @@ func init() { | ||
| 28 | // 房间排行信息 | 28 | // 房间排行信息 |
| 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+"/demo", &controllers.DemoController{}, "post:Demo") | ||
| 31 | beego.ErrorController(&controllers.ErrorController{}) | 32 | beego.ErrorController(&controllers.ErrorController{}) |
| 32 | } | 33 | } |
service-common/svconst/mysql.go
| @@ -18,5 +18,6 @@ const ( | @@ -18,5 +18,6 @@ const ( | ||
| 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_roomrank_activity_" // 房间排行活动配置 | 20 | MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_roomrank_activity_" // 房间排行活动配置 |
| 21 | - MYSQL_TABLE_S_ROOMRANK_DATA = "s_roomrank_data_" // 房间排行持久数据 | 21 | + MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player_" // 房间排行玩家数据 |
| 22 | + MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room_" // 房间排行房间数据 | ||
| 22 | ) | 23 | ) |
service-common/svmysql/dto.go
| @@ -43,6 +43,7 @@ func Save(obj IMysqlData, suffix string) (err error) { | @@ -43,6 +43,7 @@ func Save(obj IMysqlData, suffix string) (err error) { | ||
| 43 | stmtSQL := stmt.SQL.String() | 43 | stmtSQL := stmt.SQL.String() |
| 44 | sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) | 44 | sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) |
| 45 | result := db.Exec(sql, stmt.Vars...) | 45 | result := db.Exec(sql, stmt.Vars...) |
| 46 | + | ||
| 46 | err = result.Error | 47 | err = result.Error |
| 47 | if err != nil { | 48 | if err != nil { |
| 48 | lxalilog.Errors(err, suffix) | 49 | lxalilog.Errors(err, suffix) |
service-common/svmysql/table.go
| @@ -9,14 +9,16 @@ import ( | @@ -9,14 +9,16 @@ import ( | ||
| 9 | "strings" | 9 | "strings" |
| 10 | ) | 10 | ) |
| 11 | 11 | ||
| 12 | -func InitTable(obj IMysqlData, gameId string) { | ||
| 13 | - info := obj.MysqlInfo(gameId) | 12 | +func InitTable(obj IMysqlData, suffix string, notify bool) { |
| 13 | + info := obj.MysqlInfo(suffix) | ||
| 14 | db := info.DbMysql | 14 | db := info.DbMysql |
| 15 | tableName := info.TableName | 15 | tableName := info.TableName |
| 16 | m := db.Migrator().(mysql.Migrator).Migrator | 16 | m := db.Migrator().(mysql.Migrator).Migrator |
| 17 | queryTx, execTx := m.GetQueryAndExecTx() | 17 | queryTx, execTx := m.GetQueryAndExecTx() |
| 18 | if HasTable(queryTx.Migrator().(mysql.Migrator).Migrator, obj, tableName) { | 18 | if HasTable(queryTx.Migrator().(mysql.Migrator).Migrator, obj, tableName) { |
| 19 | - fmt.Println(tableName + " exist, skip!") | 19 | + if notify { |
| 20 | + fmt.Println(tableName + " exist, skip!") | ||
| 21 | + } | ||
| 20 | } else { | 22 | } else { |
| 21 | err := CreateTable(execTx, obj, tableName) | 23 | err := CreateTable(execTx, obj, tableName) |
| 22 | if err != nil { | 24 | if err != nil { |
service/init.go
| @@ -12,14 +12,14 @@ func Init() { | @@ -12,14 +12,14 @@ func Init() { | ||
| 12 | // create table | 12 | // create table |
| 13 | // 卡牌卡包 | 13 | // 卡牌卡包 |
| 14 | for _, gameId := range svconst.GameListCardHolder { | 14 | for _, gameId := range svconst.GameListCardHolder { |
| 15 | - svmysql.InitTable(new(cardholder.DataCardHolder), gameId) | ||
| 16 | - svmysql.InitTable(new(cardholder.RecordCardHolderOpen), gameId) | ||
| 17 | - svmysql.InitTable(new(cardholder.RecordCardHolderRewardAlbum), gameId) | ||
| 18 | - svmysql.InitTable(new(cardholder.RecordCardHolderRewardRound), gameId) | 15 | + svmysql.InitTable(new(cardholder.DataCardHolder), 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) | ||
| 19 | } | 19 | } |
| 20 | // 卡牌卡包 | 20 | // 卡牌卡包 |
| 21 | for _, gameId := range svconst.GameListRoomRank { | 21 | for _, gameId := range svconst.GameListRoomRank { |
| 22 | - svmysql.InitTable(new(roomrank.DataRoomRank), gameId) | 22 | + svmysql.InitTable(new(roomrank.DataRoomRankPlayer), gameId, true) |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | } | 25 | } |
service/roomrank/dto-player.go
| @@ -6,8 +6,8 @@ import ( | @@ -6,8 +6,8 @@ import ( | ||
| 6 | "apigame/util/util-lx/lxtime" | 6 | "apigame/util/util-lx/lxtime" |
| 7 | ) | 7 | ) |
| 8 | 8 | ||
| 9 | -// DataRoomRank 房间排行持久数据 | ||
| 10 | -type DataRoomRank struct { | 9 | +// DataRoomRankPlayer 房间排行持久数据 |
| 10 | +type DataRoomRankPlayer struct { | ||
| 11 | Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` | 11 | Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` |
| 12 | ActivityId int64 `gorm:"comment:活动ID"` | 12 | ActivityId int64 `gorm:"comment:活动ID"` |
| 13 | 13 | ||
| @@ -15,28 +15,28 @@ type DataRoomRank struct { | @@ -15,28 +15,28 @@ type DataRoomRank struct { | ||
| 15 | UserScore int `gorm:"comment:用户评级分"` | 15 | UserScore int `gorm:"comment:用户评级分"` |
| 16 | UserClass int `gorm:"comment:用户评级"` | 16 | UserClass int `gorm:"comment:用户评级"` |
| 17 | 17 | ||
| 18 | - RoomUid int `gorm:"comment:所在房间唯一ID"` | 18 | + RoomUid int64 `gorm:"comment:所在房间唯一ID"` |
| 19 | 19 | ||
| 20 | CreateTime int64 `gorm:"comment:创建时间戳"` | 20 | CreateTime int64 `gorm:"comment:创建时间戳"` |
| 21 | UpdateTime int64 `gorm:"comment:修改时间戳"` | 21 | UpdateTime int64 `gorm:"comment:修改时间戳"` |
| 22 | } | 22 | } |
| 23 | 23 | ||
| 24 | -func (d *DataRoomRank) MysqlInfo(suffix string) *svmysql.MysqlInfo { | ||
| 25 | - tableName := svconst.MYSQL_TABLE_S_ROOMRANK_DATA | 24 | +func (d *DataRoomRankPlayer) MysqlInfo(suffix string) *svmysql.MysqlInfo { |
| 25 | + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_PLAYER | ||
| 26 | return &svmysql.MysqlInfo{ | 26 | return &svmysql.MysqlInfo{ |
| 27 | DbMysql: svconst.DbCommon, | 27 | DbMysql: svconst.DbCommon, |
| 28 | TableName: tableName + suffix, | 28 | TableName: tableName + suffix, |
| 29 | } | 29 | } |
| 30 | } | 30 | } |
| 31 | 31 | ||
| 32 | -func NewDataRoomRank(uid int64) *DataRoomRank { | ||
| 33 | - d := &DataRoomRank{ | 32 | +func NewDataRoomRankPlayer(uid int64) *DataRoomRankPlayer { |
| 33 | + d := &DataRoomRankPlayer{ | ||
| 34 | Uid: uid, | 34 | Uid: uid, |
| 35 | } | 35 | } |
| 36 | return d | 36 | return d |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | -func (d *DataRoomRank) Init(uid int64) { | 39 | +func (d *DataRoomRankPlayer) Init(uid int64) { |
| 40 | d.Uid = uid | 40 | d.Uid = uid |
| 41 | d.CreateTime = lxtime.NowUninx() | 41 | d.CreateTime = lxtime.NowUninx() |
| 42 | } | 42 | } |
| @@ -0,0 +1,29 @@ | @@ -0,0 +1,29 @@ | ||
| 1 | +package roomrank | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/service-common/svconst" | ||
| 5 | + "apigame/service-common/svmysql" | ||
| 6 | + "fmt" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +// DataRoomRankRoom 房间排行持久数据 | ||
| 10 | +type DataRoomRankRoom struct { | ||
| 11 | + Id int64 `gorm:"column:id;primaryKey;comment:房间唯一ID"` | ||
| 12 | + Uid int64 `gorm:"comment:玩家唯一ID"` | ||
| 13 | + ActivityId int64 `gorm:"comment:活动ID"` | ||
| 14 | + | ||
| 15 | + CreateTime int64 `gorm:"comment:创建时间戳"` | ||
| 16 | + UpdateTime int64 `gorm:"comment:修改时间戳"` | ||
| 17 | +} | ||
| 18 | + | ||
| 19 | +func (d *DataRoomRankRoom) MysqlInfo(suffix string) *svmysql.MysqlInfo { | ||
| 20 | + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_ROOM | ||
| 21 | + return &svmysql.MysqlInfo{ | ||
| 22 | + DbMysql: svconst.DbCommon, | ||
| 23 | + TableName: tableName + suffix, | ||
| 24 | + } | ||
| 25 | +} | ||
| 26 | + | ||
| 27 | +func (d *DataRoomRankRoom) GetSuffix(gameId string) string { | ||
| 28 | + return fmt.Sprintf("%s_%d", gameId, d.ActivityId) | ||
| 29 | +} |
service/roomrank/player.go
| @@ -8,14 +8,14 @@ import ( | @@ -8,14 +8,14 @@ import ( | ||
| 8 | ) | 8 | ) |
| 9 | 9 | ||
| 10 | // SavePlayer 存储数据 | 10 | // SavePlayer 存储数据 |
| 11 | -func SavePlayer(gameId string, d *DataRoomRank) { | 11 | +func SavePlayer(gameId string, d *DataRoomRankPlayer) { |
| 12 | d.UpdateTime = lxtime.NowUninx() | 12 | d.UpdateTime = lxtime.NowUninx() |
| 13 | 13 | ||
| 14 | _ = svmysql.Save(d, gameId) | 14 | _ = svmysql.Save(d, gameId) |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | -func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { | ||
| 18 | - d = NewDataRoomRank(uid) | 17 | +func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) { |
| 18 | + d = NewDataRoomRankPlayer(uid) | ||
| 19 | has, err := svmysql.First(d, gameId) | 19 | has, err := svmysql.First(d, gameId) |
| 20 | if err != nil { | 20 | if err != nil { |
| 21 | return | 21 | return |
| @@ -29,7 +29,7 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { | @@ -29,7 +29,7 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { | ||
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | // LoadPlayer 获取数据 外部接口 | 31 | // LoadPlayer 获取数据 外部接口 |
| 32 | -func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { | 32 | +func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRankPlayer) { |
| 33 | configId := config.Id | 33 | configId := config.Id |
| 34 | d = _LoadPlayer(gameId, uid) | 34 | d = _LoadPlayer(gameId, uid) |
| 35 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | 35 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 |
| @@ -44,7 +44,7 @@ func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *Da | @@ -44,7 +44,7 @@ func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *Da | ||
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | // GetInfo 活动信息 | 46 | // GetInfo 活动信息 |
| 47 | -func GetInfo(player *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { | 47 | +func GetInfo(player *DataRoomRankPlayer, conf *configs.RoomRankConfig) models.RoomRankInfo { |
| 48 | info := models.RoomRankInfo{} | 48 | info := models.RoomRankInfo{} |
| 49 | return info | 49 | return info |
| 50 | } | 50 | } |
| @@ -0,0 +1,37 @@ | @@ -0,0 +1,37 @@ | ||
| 1 | +package roomrank | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "apigame/service-common/svmysql" | ||
| 5 | + "apigame/util/util-lx/lxalilog" | ||
| 6 | + "apigame/util/util-lx/lxtime" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +func tryInitTable(gameId string, d *DataRoomRankRoom) { | ||
| 10 | + suffix := d.GetSuffix(gameId) | ||
| 11 | + svmysql.InitTable(d, suffix, false) | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +// SaveRoom 存储数据 | ||
| 15 | +func SaveRoom(gameId string, d *DataRoomRankRoom) { | ||
| 16 | + tryInitTable(gameId, d) | ||
| 17 | + | ||
| 18 | + d.UpdateTime = lxtime.NowUninx() | ||
| 19 | + | ||
| 20 | + suffix := d.GetSuffix(gameId) | ||
| 21 | + _ = svmysql.Save(d, suffix) | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +// LoadRoom 获取数据 外部接口 | ||
| 25 | +func LoadRoom(gameId string, id int64, activityId int64) (d *DataRoomRankRoom) { | ||
| 26 | + d = &DataRoomRankRoom{Id: id, ActivityId: activityId} | ||
| 27 | + tryInitTable(gameId, d) | ||
| 28 | + suffix := d.GetSuffix(gameId) | ||
| 29 | + has, err := svmysql.First(d, suffix) | ||
| 30 | + if err != nil { | ||
| 31 | + return | ||
| 32 | + } | ||
| 33 | + if !has { | ||
| 34 | + lxalilog.Errors(err, "roomrank.LoadRoom error", gameId, id, activityId) | ||
| 35 | + } | ||
| 36 | + return | ||
| 37 | +} |