diff --git a/service/cardholder/handle.go b/service/cardholder/handle.go index ae014dd..384787c 100644 --- a/service/cardholder/handle.go +++ b/service/cardholder/handle.go @@ -48,9 +48,9 @@ func HandleInfo(req *models.ReqCardHolderInfo) (code string, rsp models.RspCardH } // 读取游戏数据 - gameData := LoadData(req.GameID, req.UID, config) + player := LoadPlayer(req.GameID, req.UID, config) - rsp.CardHolderInfo = GetInfo(gameData, config) + rsp.CardHolderInfo = GetInfo(player, config) return } @@ -85,21 +85,21 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH } // 读取游戏数据 - gameData := LoadData(req.GameID, req.UID, config) + player := LoadPlayer(req.GameID, req.UID, config) // 检查游戏数据 轮次等 - code = CheckGameData(gameData, config) + code = CheckGameData(player, config) if code != code_msg.RECODE_OK { return } // 开始处理抽卡 openMode := 0 - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) allNewCards := make([]int, 0) for _, idCardholder := range req.Ids { confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] newCards := DoOpen(req.GameID, - gameData, config, + player, config, confCardholder, sequenceId, cohort, openMode) @@ -111,7 +111,7 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH rsp.NewCards = append(rsp.NewCards, newCards) } awardAlbum, awardRound := DoOpenCheckAward(req.GameID, - gameData, config, + player, config, sequenceId, cohort, allNewCards, openMode) @@ -119,13 +119,13 @@ func HandleOpen(req *models.ReqCardHolderOpen) (code string, rsp models.RspCardH rsp.AwardRound = awardRound // 计算星星点数 - CalculateStarCount(gameData, config) + CalculateStarCount(player, config) // 存档 - SaveData(req.GameID, gameData) + SavePlayer(req.GameID, player) // 返回信息 - rsp.CardHolderInfo = GetInfo(gameData, config) + rsp.CardHolderInfo = GetInfo(player, config) return } @@ -158,15 +158,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model } // 读取游戏数据 - gameData := LoadData(req.GameID, req.UID, config) + player := LoadPlayer(req.GameID, req.UID, config) // 检查游戏数据 轮次等 - code = CheckGameData(gameData, config) + code = CheckGameData(player, config) if code != code_msg.RECODE_OK { return } // 判断星星数是否足够 - if gameData.Details.StarCount < confStarShop.NeedStarNumber { + if player.Details.StarCount < confStarShop.NeedStarNumber { code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR return } @@ -191,21 +191,21 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model } // 按照规则扣除星星 - enough, cardList := GetStarCardList(gameData, config, confStarShop.NeedStarNumber) + enough, cardList := GetStarCardList(player, config, confStarShop.NeedStarNumber) if !enough { code = code_msg.RECODE_MERGE_CARDHOLDER_STAR_NOTENOUGH_ERROR return } for i, i2 := range cardList { - gameData.Details.Cards[i] -= i2 + player.Details.Cards[i] -= i2 } // 开始处理抽卡 openMode := 1 - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) for i := 0; i < cardholderCount; i++ { newCards := DoOpen(req.GameID, - gameData, config, + player, config, confCardholder, sequenceId, cohort, openMode) @@ -214,7 +214,7 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model } } awardAlbum, awardRound := DoOpenCheckAward(req.GameID, - gameData, config, + player, config, sequenceId, cohort, rsp.NewCards, openMode) @@ -222,15 +222,15 @@ func HandleShopExchange(req *models.ReqStarShopExchange) (code string, rsp model rsp.AwardRound = awardRound // 计算星星点数 - CalculateStarCount(gameData, config) + CalculateStarCount(player, config) // 存档 - SaveData(req.GameID, gameData) + SavePlayer(req.GameID, player) utslice.Shuffle(rsp.NewCards) // 返回信息 - rsp.CardHolderInfo = GetInfo(gameData, config) + rsp.CardHolderInfo = GetInfo(player, config) return } @@ -258,38 +258,38 @@ func HandleAutoExchangeInfo(req *models.ReqAutoExchangeInfo) (code string, rsp m } // 读取游戏数据 - gameData := LoadData(req.GameID, req.UID, config) + player := LoadPlayer(req.GameID, req.UID, config) // 检查游戏数据 轮次等 - code = CheckGameData(gameData, config) + code = CheckGameData(player, config) if code != code_msg.RECODE_OK { return } - if gameData.Details.LastStarCount <= 0 { + if player.Details.LastStarCount <= 0 { code = code_msg.RECODE_MERGE_CARDHOLDER_NOAUTOEXCHANGEINFO_ERROR return } - rsp.LastStarCount = gameData.Details.LastStarCount - for _, i2 := range gameData.Details.AutoExchangeHolder { + rsp.LastStarCount = player.Details.LastStarCount + for _, i2 := range player.Details.AutoExchangeHolder { rsp.AutoExchangeHolder = append(rsp.AutoExchangeHolder, i2) } // 把当前的卡包内数据放在新卡数据里给客户端 - for i1, i2 := range gameData.Details.Cards { + for i1, i2 := range player.Details.Cards { for i := 0; i < i2; i++ { rsp.NewCards = append(rsp.NewCards, i1) } } - gameData.Details.LastStarCount = 0 - gameData.Details.AutoExchangeHolder = make([]int, 0) + player.Details.LastStarCount = 0 + player.Details.AutoExchangeHolder = make([]int, 0) // 存档 - SaveData(req.GameID, gameData) + SavePlayer(req.GameID, player) utslice.Shuffle(rsp.NewCards) // 返回信息 - rsp.CardHolderInfo = GetInfo(gameData, config) + rsp.CardHolderInfo = GetInfo(player, config) return } diff --git a/service/cardholder/logic.go b/service/cardholder/logic.go index 55d7bd5..aa19882 100644 --- a/service/cardholder/logic.go +++ b/service/cardholder/logic.go @@ -15,52 +15,6 @@ import ( "strconv" ) -// SaveData 存储数据 -func SaveData(gameId string, d *DataCardHolder) { - d.UpdateTime = lxtime.NowUninx() - d.Encode() - - _ = svmysql.Save(d, gameId) -} - -func _LoadData(gameId string, uid int64) (d *DataCardHolder) { - d = NewDataCardHolder(uid) - has, err := svmysql.First(d, gameId) - if err != nil { - return - } - if has { - d.Decode() - } else { - d.Init(uid) - _ = svmysql.Insert(d, gameId) - } - return -} - -// LoadData 获取数据 外部接口 -func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { - configId := config.Id - d = _LoadData(gameId, uid) - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 - if configId != 0 && - configId != d.ActivityId { - - // 剩余的星星数 - starCount := d.Details.StarCount - - d.ActivityId = configId - d.Details = NewDataCardHolderDetails() - - // 使用剩余的星星数来自动兑换卡包 - d.Details.LastStarCount = starCount - NextActivityAutoExchange(gameId, d, config) - - SaveData(gameId, d) - } - return -} - // CheckStatus 判断活动是否开启 func CheckStatus(conf *configs.CardActivityConfig) string { sec := lxtime.NowUninx() @@ -120,14 +74,14 @@ func GetListFromArray(array []string, scale, count int) []string { } // GetNewCard 按顺序查找数目最少的一张卡抽取 -func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int { +func GetNewCard(player *DataCardHolder, conf *configs.CardActivityConfig) int { if len(conf.CardConfig) < 1 { return 0 } rate := int64(100000000) list := make([]int64, 0) for id, _ := range conf.CardConfig { - count, _ := gameData.Details.Cards[id] + count, _ := player.Details.Cards[id] index := int64(count)*rate + int64(id) list = append(list, index) } @@ -137,10 +91,10 @@ func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int } // CheckAlbumFinish 判断卡组是否已集齐 -func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.CardActivityConfig) bool { +func CheckAlbumFinish(albumId int, player *DataCardHolder, config *configs.CardActivityConfig) bool { for _, conf := range config.CardConfig { if conf.SetId == albumId { - count := gameData.Details.Cards[conf.Id] + count := player.Details.Cards[conf.Id] if count < 1 { return false } @@ -150,9 +104,9 @@ func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.Car } // CheckRoundFinish 判断轮次是否已集齐(所有卡组集齐) -func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConfig) bool { +func CheckRoundFinish(player *DataCardHolder, config *configs.CardActivityConfig) bool { for _, conf := range config.AlbumConfig { - count := gameData.Details.Album[conf.SetId] + count := player.Details.Album[conf.SetId] if count < 1 { return false } @@ -161,34 +115,34 @@ func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConf } // HandleNextRound 处理轮次完成 星级序列刻度 卡牌序列刻度 -func HandleNextRound(gameData *DataCardHolder) { - gameData.Details.Round += 1 - gameData.Details.Cards = make(map[int]int) - gameData.Details.Album = make(map[int]int) +func HandleNextRound(player *DataCardHolder) { + player.Details.Round += 1 + player.Details.Cards = make(map[int]int) + player.Details.Album = make(map[int]int) } // GetInfo 玩家卡牌活动信息 -func GetInfo(gameData *DataCardHolder, conf *configs.CardActivityConfig) models.CardHolderInfo { +func GetInfo(player *DataCardHolder, conf *configs.CardActivityConfig) models.CardHolderInfo { info := models.CardHolderInfo{ Cards: make(map[int]int), Album: make(map[int]int), Round: 0, } - for i, i2 := range gameData.Details.Cards { + for i, i2 := range player.Details.Cards { info.Cards[i] = i2 } - for i, i2 := range gameData.Details.Album { + for i, i2 := range player.Details.Album { info.Album[i] = i2 } - info.StarCount = gameData.Details.StarCount - info.Round = gameData.Details.Round + info.StarCount = player.Details.StarCount + info.Round = player.Details.Round return info } // DoOpen 封装的抽卡逻辑 // openMode:开包类型0客户端驱动1星星商店购买2剩余星星兑换 func DoOpen(gameId string, - gameData *DataCardHolder, + player *DataCardHolder, config *configs.CardActivityConfig, confCardholder configs.OpenCardholderConfig, sequenceId, cohort string, @@ -198,22 +152,22 @@ func DoOpen(gameId string, if confCardholder.IsNew != 0 { // 如果是新卡包 按顺序查找数目最少的一张卡抽取 - cardId := GetNewCard(gameData, config) + cardId := GetNewCard(player, config) // 增加卡牌 - gameData.Details.Cards[cardId] += 1 + player.Details.Cards[cardId] += 1 newCards = append(newCards, cardId) } else { getCardFunc := func(cardConfigId string) { confCardSequence, hasCardSequence := config.FindCardSequenceConfig(cardConfigId, sequenceId, cohort) if hasCardSequence { combineId := configs.CombineIdSequenceIdCohort(cardConfigId, sequenceId, cohort) - scale := gameData.Details.CardSequenceScales[combineId] + scale := player.Details.CardSequenceScales[combineId] cardId := GetOneFromArray(confCardSequence.CardIdLists, scale) cardIdInt := utstring.StringToInt(cardId) // 增加刻度 - gameData.Details.CardSequenceScales[combineId] = scale + 1 + player.Details.CardSequenceScales[combineId] = scale + 1 // 增加卡牌 - gameData.Details.Cards[cardIdInt] += 1 + player.Details.Cards[cardIdInt] += 1 newCards = append(newCards, cardIdInt) } } @@ -228,10 +182,10 @@ func DoOpen(gameId string, confNormalCardStar, hasNormalCardStar := config.FindNormalCardStarConfig(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) if hasNormalCardStar { combineIdStar := configs.CombineIdSequenceIdCohort(confCardholder.MinimumGuaranteeCardId, sequenceId, cohort) - scaleStar := gameData.Details.StarSequenceScales[combineIdStar] + scaleStar := player.Details.StarSequenceScales[combineIdStar] starIds := GetListFromArray(confNormalCardStar.NormalCardSequenceIds, scaleStar, count) // 增加星级刻度 - gameData.Details.StarSequenceScales[combineIdStar] = scaleStar + count + player.Details.StarSequenceScales[combineIdStar] = scaleStar + count // 遍历星级刻度抽取n张卡牌 for _, id := range starIds { getCardFunc(id) @@ -241,7 +195,7 @@ func DoOpen(gameId string, } // 记录开卡包日志 { - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) _ = svmysql.Insert(NewRecordCardHolderOpen(recordBase, openMode, utstring.StringToInt(confCardholder.Id), utjson.JsonString(newCards)), gameId) @@ -252,7 +206,7 @@ func DoOpen(gameId string, // DoOpenCheckAward 封装的新卡判断是否出发卡组和轮次奖励的逻辑 func DoOpenCheckAward(gameId string, - gameData *DataCardHolder, + player *DataCardHolder, config *configs.CardActivityConfig, sequenceId, cohort string, newCards []int, @@ -271,7 +225,7 @@ func DoOpenCheckAward(gameId string, } albumId := confCard.SetId // 是否已领过 - countGot := gameData.Details.Album[albumId] + countGot := player.Details.Album[albumId] if countGot > 0 { continue } @@ -281,34 +235,34 @@ func DoOpenCheckAward(gameId string, continue } // 检查卡组内卡是否集齐 - if !CheckAlbumFinish(albumId, gameData, config) { + if !CheckAlbumFinish(albumId, player, config) { continue } // 集齐处理发奖 - gameData.Details.Album[albumId] += 1 - award := confAlbum.Rewards[utstring.IntToString(gameData.Details.Round)] + player.Details.Album[albumId] += 1 + award := confAlbum.Rewards[utstring.IntToString(player.Details.Round)] awardAlbum[albumId] = award { // 记录日志 - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) _ = svmysql.Insert(NewRecordCardHolderRewardAlbum(recordBase, albumId, award), gameId) } } // 判断 处理 发放轮次奖励 轮次完成 - if CheckRoundFinish(gameData, config) { + if CheckRoundFinish(player, config) { // 返回奖励 - awardRound = config.Awards[utstring.IntToString(gameData.Details.Round)] + awardRound = config.Awards[utstring.IntToString(player.Details.Round)] // 记录日志 - recordBase := NewRecordCardHolderBase(gameData.Uid, sequenceId, cohort, config.Id, gameData.Details.Round) + recordBase := NewRecordCardHolderBase(player.Uid, sequenceId, cohort, config.Id, player.Details.Round) _ = svmysql.Insert(NewRecordCardHolderRewardRound(recordBase, awardRound), gameId) // 处理轮次完成 - HandleNextRound(gameData) + HandleNextRound(player) } } @@ -316,9 +270,9 @@ func DoOpenCheckAward(gameId string, } // CalculateStarCount 计算星星点数 -func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityConfig) { +func CalculateStarCount(player *DataCardHolder, config *configs.CardActivityConfig) { starCount := 0 - for cardId, cardCount := range gameData.Details.Cards { + for cardId, cardCount := range player.Details.Cards { if cardCount <= 1 { continue } @@ -334,11 +288,11 @@ func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityCo starCount += (cardCount - 1) * confCard.Star } } - gameData.Details.StarCount = starCount + player.Details.StarCount = starCount } // GetStarCardList 按照规则扣除星星数找到需要扣除的卡牌列表 -func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { +func GetStarCardList(player *DataCardHolder, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { enough = false cardList = make(map[int]int) starAmount := 0 @@ -346,7 +300,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi // 等级依次从低到高 // 先普卡 for i := 1; i <= levelMax; i++ { - for cardId, cardCount := range gameData.Details.Cards { + for cardId, cardCount := range player.Details.Cards { if starAmount >= needStar { enough = true return @@ -373,7 +327,7 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi } // 金卡 for i := 1; i <= levelMax; i++ { - for cardId, cardCount := range gameData.Details.Cards { + for cardId, cardCount := range player.Details.Cards { if starAmount >= needStar { enough = true return @@ -407,8 +361,8 @@ func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfi } // NextActivityAutoExchange 活动切换时自动兑换卡包 -func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *configs.CardActivityConfig) { - starCount := gameData.Details.LastStarCount +func NextActivityAutoExchange(gameId string, player *DataCardHolder, config *configs.CardActivityConfig) { + starCount := player.Details.LastStarCount // 把星星的配置按照需要的星星数降序排列 list := lo.Values[int, configs.StarShopConfig](config.StarShopConfig) sort.Slice(list, func(i, j int) bool { @@ -418,19 +372,19 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c // 遍历 for _, config := range list { for starCount >= config.NeedStarNumber { - gameData.Details.AutoExchangeHolder = append(gameData.Details.AutoExchangeHolder, config.Id) + player.Details.AutoExchangeHolder = append(player.Details.AutoExchangeHolder, config.Id) starCount -= config.NeedStarNumber } } // 开始处理抽卡 openMode := 2 - sequenceId, cohort := GetUserSequenceIdAndCohort(gameData.Uid) + sequenceId, cohort := GetUserSequenceIdAndCohort(player.Uid) allNewCards := make([]int, 0) - for _, idCardholder := range gameData.Details.AutoExchangeHolder { + for _, idCardholder := range player.Details.AutoExchangeHolder { confCardholder, _ := config.CardholderConfig[strconv.Itoa(idCardholder)] newCards := DoOpen(gameId, - gameData, config, + player, config, confCardholder, sequenceId, cohort, openMode) @@ -441,11 +395,11 @@ func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *c } } _, _ = DoOpenCheckAward(gameId, - gameData, config, + player, config, sequenceId, cohort, allNewCards, openMode) // 计算星星点数 - CalculateStarCount(gameData, config) + CalculateStarCount(player, config) } diff --git a/service/cardholder/player.go b/service/cardholder/player.go new file mode 100644 index 0000000..78b832a --- /dev/null +++ b/service/cardholder/player.go @@ -0,0 +1,53 @@ +package cardholder + +import ( + "apigame/configs" + "apigame/service-common/svmysql" + "apigame/util/util-lx/lxtime" +) + +// SavePlayer 存储数据 +func SavePlayer(gameId string, d *DataCardHolder) { + d.UpdateTime = lxtime.NowUninx() + d.Encode() + + _ = svmysql.Save(d, gameId) +} + +func _LoadPlayer(gameId string, uid int64) (d *DataCardHolder) { + d = NewDataCardHolder(uid) + has, err := svmysql.First(d, gameId) + if err != nil { + return + } + if has { + d.Decode() + } else { + d.Init(uid) + _ = svmysql.Insert(d, gameId) + } + return +} + +// LoadPlayer 获取数据 外部接口 +func LoadPlayer(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { + configId := config.Id + d = _LoadPlayer(gameId, uid) + // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 + if configId != 0 && + configId != d.ActivityId { + + // 剩余的星星数 + starCount := d.Details.StarCount + + d.ActivityId = configId + d.Details = NewDataCardHolderDetails() + + // 使用剩余的星星数来自动兑换卡包 + d.Details.LastStarCount = starCount + NextActivityAutoExchange(gameId, d, config) + + SavePlayer(gameId, d) + } + return +} diff --git a/service/roomrank/dto-game.go b/service/roomrank/dto-game.go deleted file mode 100644 index a7e2274..0000000 --- a/service/roomrank/dto-game.go +++ /dev/null @@ -1,42 +0,0 @@ -package roomrank - -import ( - "apigame/service-common/svconst" - "apigame/service-common/svmysql" - "apigame/util/util-lx/lxtime" -) - -// DataRoomRank 房间排行持久数据 -type DataRoomRank struct { - Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` - ActivityId int64 `gorm:"comment:活动ID"` - - UserType int `gorm:"comment:用户类型"` // 0=新手用户 1=优质用户 2=普通用户 3=垃圾用户 - UserScore int `gorm:"comment:用户评级分"` - UserClass int `gorm:"comment:用户评级"` - - RoomUid int `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 - return &svmysql.MysqlInfo{ - DbMysql: svconst.DbCommon, - TableName: tableName + suffix, - } -} - -func NewDataRoomRank(uid int64) *DataRoomRank { - d := &DataRoomRank{ - Uid: uid, - } - return d -} - -func (d *DataRoomRank) Init(uid int64) { - d.Uid = uid - d.CreateTime = lxtime.NowUninx() -} diff --git a/service/roomrank/dto-player.go b/service/roomrank/dto-player.go new file mode 100644 index 0000000..a7e2274 --- /dev/null +++ b/service/roomrank/dto-player.go @@ -0,0 +1,42 @@ +package roomrank + +import ( + "apigame/service-common/svconst" + "apigame/service-common/svmysql" + "apigame/util/util-lx/lxtime" +) + +// DataRoomRank 房间排行持久数据 +type DataRoomRank struct { + Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` + ActivityId int64 `gorm:"comment:活动ID"` + + UserType int `gorm:"comment:用户类型"` // 0=新手用户 1=优质用户 2=普通用户 3=垃圾用户 + UserScore int `gorm:"comment:用户评级分"` + UserClass int `gorm:"comment:用户评级"` + + RoomUid int `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 + return &svmysql.MysqlInfo{ + DbMysql: svconst.DbCommon, + TableName: tableName + suffix, + } +} + +func NewDataRoomRank(uid int64) *DataRoomRank { + d := &DataRoomRank{ + Uid: uid, + } + return d +} + +func (d *DataRoomRank) Init(uid int64) { + d.Uid = uid + d.CreateTime = lxtime.NowUninx() +} diff --git a/service/roomrank/handle.go b/service/roomrank/handle.go index f1591cd..31128d0 100644 --- a/service/roomrank/handle.go +++ b/service/roomrank/handle.go @@ -41,9 +41,9 @@ func HandleInfo(req *models.ReqRoomRankInfo) (code string, rsp models.RspRoomRan //} // 读取游戏数据 - gameData := LoadData(req.GameID, req.UID, config) + player := LoadPlayer(req.GameID, req.UID, config) - rsp.RoomRankInfo = GetInfo(gameData, config) + rsp.RoomRankInfo = GetInfo(player, config) return } diff --git a/service/roomrank/logic.go b/service/roomrank/logic.go index e939bfc..281f76e 100644 --- a/service/roomrank/logic.go +++ b/service/roomrank/logic.go @@ -1,50 +1 @@ package roomrank - -import ( - "apigame/configs" - "apigame/models" - "apigame/service-common/svmysql" - "apigame/util/util-lx/lxtime" -) - -// SaveData 存储数据 -func SaveData(gameId string, d *DataRoomRank) { - d.UpdateTime = lxtime.NowUninx() - - _ = svmysql.Save(d, gameId) -} - -func _LoadData(gameId string, uid int64) (d *DataRoomRank) { - d = NewDataRoomRank(uid) - has, err := svmysql.First(d, gameId) - if err != nil { - return - } - if has { - } else { - d.Init(uid) - _ = svmysql.Insert(d, gameId) - } - return -} - -// LoadData 获取数据 外部接口 -func LoadData(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { - configId := config.Id - d = _LoadData(gameId, uid) - // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 - if configId != 0 && - configId != d.ActivityId { - - d.ActivityId = configId - - SaveData(gameId, d) - } - return -} - -// GetInfo 活动信息 -func GetInfo(gameData *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { - info := models.RoomRankInfo{} - return info -} diff --git a/service/roomrank/player.go b/service/roomrank/player.go new file mode 100644 index 0000000..095af95 --- /dev/null +++ b/service/roomrank/player.go @@ -0,0 +1,50 @@ +package roomrank + +import ( + "apigame/configs" + "apigame/models" + "apigame/service-common/svmysql" + "apigame/util/util-lx/lxtime" +) + +// SavePlayer 存储数据 +func SavePlayer(gameId string, d *DataRoomRank) { + d.UpdateTime = lxtime.NowUninx() + + _ = svmysql.Save(d, gameId) +} + +func _LoadPlayer(gameId string, uid int64) (d *DataRoomRank) { + d = NewDataRoomRank(uid) + has, err := svmysql.First(d, gameId) + if err != nil { + return + } + if has { + } else { + d.Init(uid) + _ = svmysql.Insert(d, gameId) + } + return +} + +// LoadPlayer 获取数据 外部接口 +func LoadPlayer(gameId string, uid int64, config *configs.RoomRankConfig) (d *DataRoomRank) { + configId := config.Id + d = _LoadPlayer(gameId, uid) + // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 + if configId != 0 && + configId != d.ActivityId { + + d.ActivityId = configId + + SavePlayer(gameId, d) + } + return +} + +// GetInfo 活动信息 +func GetInfo(player *DataRoomRank, conf *configs.RoomRankConfig) models.RoomRankInfo { + info := models.RoomRankInfo{} + return info +} -- libgit2 0.21.0