Commit d560457316538aefd06bdba4cf3a821b4fef7db6

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

feat✨:房间排行活动基本框架

controllers/demo.go 0 → 100644
... ... @@ -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 +}
... ...
models/demo.go 0 → 100644
... ... @@ -0,0 +1,11 @@
  1 +package models
  2 +
  3 +// ReqDemo 请求
  4 +type ReqDemo struct {
  5 + BaseLoginInfo
  6 + BaseSign
  7 +}
  8 +
  9 +// RspDemo 返回
  10 +type RspDemo struct {
  11 +}
... ...
routers/router.go
... ... @@ -28,5 +28,6 @@ func init() {
28 28 // 房间排行信息
29 29 beego.Router(prefix+"/roomrank/info", &controllers.RoomRankController{}, "post:Info")
30 30  
  31 + beego.Router(prefix+"/demo", &controllers.DemoController{}, "post:Demo")
31 32 beego.ErrorController(&controllers.ErrorController{})
32 33 }
... ...
service-common/svconst/mysql.go
... ... @@ -18,5 +18,6 @@ const (
18 18 MYSQL_TABLE_S_CARDHOLDER_RECORD_REWARDROUND = "s_cardholder_record_rewardround_" // 开卡包活动日志领取轮次奖励
19 19  
20 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 43 stmtSQL := stmt.SQL.String()
44 44 sql := strings.Replace(stmtSQL, stmt.Table, info.TableName, -1)
45 45 result := db.Exec(sql, stmt.Vars...)
  46 +
46 47 err = result.Error
47 48 if err != nil {
48 49 lxalilog.Errors(err, suffix)
... ...
service-common/svmysql/table.go
... ... @@ -9,14 +9,16 @@ import (
9 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 14 db := info.DbMysql
15 15 tableName := info.TableName
16 16 m := db.Migrator().(mysql.Migrator).Migrator
17 17 queryTx, execTx := m.GetQueryAndExecTx()
18 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 22 } else {
21 23 err := CreateTable(execTx, obj, tableName)
22 24 if err != nil {
... ...
service/init.go
... ... @@ -12,14 +12,14 @@ func Init() {
12 12 // create table
13 13 // 卡牌卡包
14 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 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 6 "apigame/util/util-lx/lxtime"
7 7 )
8 8  
9   -// DataRoomRank 房间排行持久数据
10   -type DataRoomRank struct {
  9 +// DataRoomRankPlayer 房间排行持久数据
  10 +type DataRoomRankPlayer struct {
11 11 Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"`
12 12 ActivityId int64 `gorm:"comment:活动ID"`
13 13  
... ... @@ -15,28 +15,28 @@ type DataRoomRank struct {
15 15 UserScore int `gorm:"comment:用户评级分"`
16 16 UserClass int `gorm:"comment:用户评级"`
17 17  
18   - RoomUid int `gorm:"comment:所在房间唯一ID"`
  18 + RoomUid int64 `gorm:"comment:所在房间唯一ID"`
19 19  
20 20 CreateTime int64 `gorm:"comment:创建时间戳"`
21 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 26 return &svmysql.MysqlInfo{
27 27 DbMysql: svconst.DbCommon,
28 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 34 Uid: uid,
35 35 }
36 36 return d
37 37 }
38 38  
39   -func (d *DataRoomRank) Init(uid int64) {
  39 +func (d *DataRoomRankPlayer) Init(uid int64) {
40 40 d.Uid = uid
41 41 d.CreateTime = lxtime.NowUninx()
42 42 }
... ...
service/roomrank/dto-room.go 0 → 100644
... ... @@ -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 8 )
9 9  
10 10 // SavePlayer 存储数据
11   -func SavePlayer(gameId string, d *DataRoomRank) {
  11 +func SavePlayer(gameId string, d *DataRoomRankPlayer) {
12 12 d.UpdateTime = lxtime.NowUninx()
13 13  
14 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 19 has, err := svmysql.First(d, gameId)
20 20 if err != nil {
21 21 return
... ... @@ -29,7 +29,7 @@ func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) {
29 29 }
30 30  
31 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 33 configId := config.Id
34 34 d = _LoadPlayer(gameId, uid)
35 35 // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新
... ... @@ -44,7 +44,7 @@ func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *Da
44 44 }
45 45  
46 46 // GetInfo 活动信息
47   -func GetInfo(player *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo {
  47 +func GetInfo(player *DataRoomRankPlayer, conf *configs.RoomRankConfig) models.RoomRankInfo {
48 48 info := models.RoomRankInfo{}
49 49 return info
50 50 }
... ...
service/roomrank/room.go 0 → 100644
... ... @@ -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 +}
... ...