From d560457316538aefd06bdba4cf3a821b4fef7db6 Mon Sep 17 00:00:00 2001 From: 王家文 Date: Wed, 17 Apr 2024 18:57:52 +0800 Subject: [PATCH] feat✨:房间排行活动基本框架 --- controllers/demo.go | 32 ++++++++++++++++++++++++++++++++ models/demo.go | 11 +++++++++++ routers/router.go | 1 + service-common/svconst/mysql.go | 3 ++- service-common/svmysql/dto.go | 1 + service-common/svmysql/table.go | 8 +++++--- service/init.go | 10 +++++----- service/roomrank/dto-player.go | 16 ++++++++-------- service/roomrank/dto-room.go | 29 +++++++++++++++++++++++++++++ service/roomrank/player.go | 10 +++++----- service/roomrank/room.go | 37 +++++++++++++++++++++++++++++++++++++ 11 files changed, 136 insertions(+), 22 deletions(-) create mode 100644 controllers/demo.go create mode 100644 models/demo.go create mode 100644 service/roomrank/dto-room.go create mode 100644 service/roomrank/room.go diff --git a/controllers/demo.go b/controllers/demo.go new file mode 100644 index 0000000..e095649 --- /dev/null +++ b/controllers/demo.go @@ -0,0 +1,32 @@ +package controllers + +import ( + "apigame/models" + "apigame/service/code-msg" + "apigame/service/roomrank" + "fmt" +) + +// DemoController 绑定控制器 +type DemoController struct { + BaseController +} + +// Demo demo +func (c *DemoController) Demo() { + req := new(models.ReqDemo) + if !c.GetPostData(req) { + return + } + rsp := models.RspDemo{} + + fmt.Println("DemoController.demo") + + { + room := &roomrank.DataRoomRankRoom{Uid: req.UID, ActivityId: 1} + roomrank.SaveRoom(req.GameID, room) + fmt.Println(room.Id) + } + + c.RetRspCodeData(code_msg.RECODE_OK, rsp) +} diff --git a/models/demo.go b/models/demo.go new file mode 100644 index 0000000..bedfc31 --- /dev/null +++ b/models/demo.go @@ -0,0 +1,11 @@ +package models + +// ReqDemo 请求 +type ReqDemo struct { + BaseLoginInfo + BaseSign +} + +// RspDemo 返回 +type RspDemo struct { +} diff --git a/routers/router.go b/routers/router.go index b6d27db..33c96e2 100644 --- a/routers/router.go +++ b/routers/router.go @@ -28,5 +28,6 @@ func init() { // 房间排行信息 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info") + beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo") beego.ErrorController(&controllers.ErrorController{}) } diff --git a/service-common/svconst/mysql.go b/service-common/svconst/mysql.go index 116f669..82c623e 100644 --- a/service-common/svconst/mysql.go +++ b/service-common/svconst/mysql.go @@ -18,5 +18,6 @@ const ( MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround_" // 开卡包活动日志领取轮次奖励 MYSQL_TABLE_S_ROOMRANK_CONFIG = "s_roomrank_activity_" // 房间排行活动配置 - MYSQL_TABLE_S_ROOMRANK_DATA = "s_roomrank_data_" // 房间排行持久数据 + MYSQL_TABLE_S_ROOMRANK_PLAYER = "s_roomrank_player_" // 房间排行玩家数据 + MYSQL_TABLE_S_ROOMRANK_ROOM = "s_roomrank_room_" // 房间排行房间数据 ) diff --git a/service-common/svmysql/dto.go b/service-common/svmysql/dto.go index 97f1a89..4789c32 100644 --- a/service-common/svmysql/dto.go +++ b/service-common/svmysql/dto.go @@ -43,6 +43,7 @@ func Save(obj IMysqlData, suffix string) (err error) { stmtSQL := stmt.SQL.String() sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1) result := db.Exec(sql, stmt.Vars...) + err = result.Error if err != nil { lxalilog.Errors(err, suffix) diff --git a/service-common/svmysql/table.go b/service-common/svmysql/table.go index 5b9733a..88028fe 100644 --- a/service-common/svmysql/table.go +++ b/service-common/svmysql/table.go @@ -9,14 +9,16 @@ import ( "strings" ) -func InitTable(obj IMysqlData, gameId string) { - info := obj.MysqlInfo(gameId) +func InitTable(obj IMysqlData, suffix string, notify bool) { + info := obj.MysqlInfo(suffix) db := info.DbMysql tableName := info.TableName m := db.Migrator().(mysql.Migrator).Migrator queryTx, execTx := m.GetQueryAndExecTx() if HasTable(queryTx.Migrator().(mysql.Migrator).Migrator, obj, tableName) { - fmt.Println(tableName + " exist, skip!") + if notify { + fmt.Println(tableName + " exist, skip!") + } } else { err := CreateTable(execTx, obj, tableName) if err != nil { diff --git a/service/init.go b/service/init.go index b5e5dfa..0fc4b47 100644 --- a/service/init.go +++ b/service/init.go @@ -12,14 +12,14 @@ func Init() { // create table // 卡牌卡包 for _, gameId := range svconst.GameListCardHolder { - svmysql.InitTable(new(cardholder.DataCardHolder), gameId) - svmysql.InitTable(new(cardholder.RecordCardHolderOpen), gameId) - svmysql.InitTable(new(cardholder.RecordCardHolderRewardAlbum), gameId) - svmysql.InitTable(new(cardholder.RecordCardHolderRewardRound), gameId) + svmysql.InitTable(new(cardholder.DataCardHolder), gameId, true) + svmysql.InitTable(new(cardholder.RecordCardHolderOpen), gameId, true) + svmysql.InitTable(new(cardholder.RecordCardHolderRewardAlbum), gameId, true) + svmysql.InitTable(new(cardholder.RecordCardHolderRewardRound), gameId, true) } // 卡牌卡包 for _, gameId := range svconst.GameListRoomRank { - svmysql.InitTable(new(roomrank.DataRoomRank), gameId) + svmysql.InitTable(new(roomrank.DataRoomRankPlayer), gameId, true) } } diff --git a/service/roomrank/dto-player.go b/service/roomrank/dto-player.go index a7e2274..410926e 100644 --- a/service/roomrank/dto-player.go +++ b/service/roomrank/dto-player.go @@ -6,8 +6,8 @@ import ( "apigame/util/util-lx/lxtime" ) -// DataRoomRank 房间排行持久数据 -type DataRoomRank struct { +// DataRoomRankPlayer 房间排行持久数据 +type DataRoomRankPlayer struct { Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` ActivityId int64 `gorm:"comment:活动ID"` @@ -15,28 +15,28 @@ type DataRoomRank struct { UserScore int `gorm:"comment:用户评级分"` UserClass int `gorm:"comment:用户评级"` - RoomUid int `gorm:"comment:所在房间唯一ID"` + RoomUid int64 `gorm:"comment:所在房间唯一ID"` CreateTime int64 `gorm:"comment:创建时间戳"` UpdateTime int64 `gorm:"comment:修改时间戳"` } -func (d *DataRoomRank) MysqlInfo(suffix string) *svmysql.MysqlInfo { - tableName := svconst.MYSQL_TABLE_S_ROOMRANK_DATA +func (d *DataRoomRankPlayer) MysqlInfo(suffix string) *svmysql.MysqlInfo { + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_PLAYER return &svmysql.MysqlInfo{ DbMysql: svconst.DbCommon, TableName: tableName + suffix, } } -func NewDataRoomRank(uid int64) *DataRoomRank { - d := &DataRoomRank{ +func NewDataRoomRankPlayer(uid int64) *DataRoomRankPlayer { + d := &DataRoomRankPlayer{ Uid: uid, } return d } -func (d *DataRoomRank) Init(uid int64) { +func (d *DataRoomRankPlayer) Init(uid int64) { d.Uid = uid d.CreateTime = lxtime.NowUninx() } diff --git a/service/roomrank/dto-room.go b/service/roomrank/dto-room.go new file mode 100644 index 0000000..67762de --- /dev/null +++ b/service/roomrank/dto-room.go @@ -0,0 +1,29 @@ +package roomrank + +import ( + "apigame/service-common/svconst" + "apigame/service-common/svmysql" + "fmt" +) + +// DataRoomRankRoom 房间排行持久数据 +type DataRoomRankRoom struct { + Id int64 `gorm:"column:id;primaryKey;comment:房间唯一ID"` + Uid int64 `gorm:"comment:玩家唯一ID"` + ActivityId int64 `gorm:"comment:活动ID"` + + CreateTime int64 `gorm:"comment:创建时间戳"` + UpdateTime int64 `gorm:"comment:修改时间戳"` +} + +func (d *DataRoomRankRoom) MysqlInfo(suffix string) *svmysql.MysqlInfo { + tableName := svconst.MYSQL_TABLE_S_ROOMRANK_ROOM + return &svmysql.MysqlInfo{ + DbMysql: svconst.DbCommon, + TableName: tableName + suffix, + } +} + +func (d *DataRoomRankRoom) GetSuffix(gameId string) string { + return fmt.Sprintf("%s_%d", gameId, d.ActivityId) +} diff --git a/service/roomrank/player.go b/service/roomrank/player.go index 095af95..5975292 100644 --- a/service/roomrank/player.go +++ b/service/roomrank/player.go @@ -8,14 +8,14 @@ import ( ) // SavePlayer 存储数据 -func SavePlayer(gameId string, d *DataRoomRank) { +func SavePlayer(gameId string, d *DataRoomRankPlayer) { d.UpdateTime = lxtime.NowUninx() _ = svmysql.Save(d, gameId) } -func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { - d = NewDataRoomRank(uid) +func _LoadPlayer(gameId string, uid int64) (d *DataRoomRankPlayer) { + d = NewDataRoomRankPlayer(uid) has, err := svmysql.First(d, gameId) if err != nil { return @@ -29,7 +29,7 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { } // LoadPlayer 获取数据 外部接口 -func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { +func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRankPlayer) { configId := config.Id d = _LoadPlayer(gameId, uid) // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 @@ -44,7 +44,7 @@ func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *Da } // GetInfo 活动信息 -func GetInfo(player *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { +func GetInfo(player *DataRoomRankPlayer, conf *configs.RoomRankConfig) models.RoomRankInfo { info := models.RoomRankInfo{} return info } diff --git a/service/roomrank/room.go b/service/roomrank/room.go new file mode 100644 index 0000000..fe87664 --- /dev/null +++ b/service/roomrank/room.go @@ -0,0 +1,37 @@ +package roomrank + +import ( + "apigame/service-common/svmysql" + "apigame/util/util-lx/lxalilog" + "apigame/util/util-lx/lxtime" +) + +func tryInitTable(gameId string, d *DataRoomRankRoom) { + suffix := d.GetSuffix(gameId) + svmysql.InitTable(d, suffix, false) +} + +// SaveRoom 存储数据 +func SaveRoom(gameId string, d *DataRoomRankRoom) { + tryInitTable(gameId, d) + + d.UpdateTime = lxtime.NowUninx() + + suffix := d.GetSuffix(gameId) + _ = svmysql.Save(d, suffix) +} + +// LoadRoom 获取数据 外部接口 +func LoadRoom(gameId string, id int64, activityId int64) (d *DataRoomRankRoom) { + d = &DataRoomRankRoom{Id: id, ActivityId: activityId} + tryInitTable(gameId, d) + suffix := d.GetSuffix(gameId) + has, err := svmysql.First(d, suffix) + if err != nil { + return + } + if !has { + lxalilog.Errors(err, "roomrank.LoadRoom error", gameId, id, activityId) + } + return +} -- libgit2 0.21.0