Commit 015645a13b3a1781fbc4a51e9bb702f66f8bd9a7
1 parent
29e2ebdc
Exists in
master
and in
1 other branch
refactor♻️:redis对象和mysql对象持久化和读取
Showing
3 changed files
with
40 additions
and
44 deletions
Show diff stats
service/cardholder/dto-game.go
| @@ -2,39 +2,33 @@ package cardholder | @@ -2,39 +2,33 @@ package cardholder | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/common/svconst" | 4 | "apigame/common/svconst" |
| 5 | - "apigame/common/svdto" | 5 | + "apigame/common/svmysql" |
| 6 | "apigame/service/constd" | 6 | "apigame/service/constd" |
| 7 | - "apigame/util/utdto" | ||
| 8 | "apigame/util/util-lx/lxalilog" | 7 | "apigame/util/util-lx/lxalilog" |
| 9 | "apigame/util/util-lx/lxtime" | 8 | "apigame/util/util-lx/lxtime" |
| 10 | "encoding/json" | 9 | "encoding/json" |
| 11 | - "fmt" | ||
| 12 | ) | 10 | ) |
| 13 | 11 | ||
| 14 | -// CardHolderData 卡牌活动持久数据 | ||
| 15 | -type CardHolderData struct { | 12 | +// DataCardHolder 卡牌活动持久数据 |
| 13 | +type DataCardHolder struct { | ||
| 16 | Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` | 14 | Uid int64 `gorm:"column:uid;primaryKey;comment:玩家唯一ID"` |
| 17 | ActivityId int64 `gorm:"comment:活动ID"` | 15 | ActivityId int64 `gorm:"comment:活动ID"` |
| 18 | - Details *CardHolderDataDetails `gorm:"-"` // 活动详情 | 16 | + Details *DataCardHolderDetails `gorm:"-"` // 活动详情 |
| 19 | DetailsText string `gorm:"comment:活动详情封装"` | 17 | DetailsText string `gorm:"comment:活动详情封装"` |
| 20 | CreateTime int64 `gorm:"comment:创建时间戳"` | 18 | CreateTime int64 `gorm:"comment:创建时间戳"` |
| 21 | UpdateTime int64 `gorm:"comment:修改时间戳"` | 19 | UpdateTime int64 `gorm:"comment:修改时间戳"` |
| 22 | } | 20 | } |
| 23 | 21 | ||
| 24 | -func (c *CardHolderData) TableName() string { return utdto.MYSQL_TABLE_TEMPLATE } | ||
| 25 | - | ||
| 26 | -func (d *CardHolderData) GetRule(gameId string) *svdto.DtoRule { | 22 | +func (d *DataCardHolder) MysqlInfo(gameId string) *svmysql.MysqlInfo { |
| 27 | tableName := constd.MYSQL_TABLE_S_CARDHOLDER_DATA | 23 | tableName := constd.MYSQL_TABLE_S_CARDHOLDER_DATA |
| 28 | - return &svdto.DtoRule{ | 24 | + return &svmysql.MysqlInfo{ |
| 29 | DbMysql: svconst.DbCommon, | 25 | DbMysql: svconst.DbCommon, |
| 30 | TableName: tableName + gameId, | 26 | TableName: tableName + gameId, |
| 31 | - CacheKey: fmt.Sprintf("%s:%s:%s", svdto.REDIS_CACHEP_REFIX, tableName, gameId), | ||
| 32 | - CacheTime: 300, | ||
| 33 | } | 27 | } |
| 34 | } | 28 | } |
| 35 | 29 | ||
| 36 | -// CardHolderDataDetails 卡牌活动详情 | ||
| 37 | -type CardHolderDataDetails struct { | 30 | +// DataCardHolderDetails 卡牌活动详情 |
| 31 | +type DataCardHolderDetails struct { | ||
| 38 | Cards map[int]int // 每张卡集了多少张 k=卡牌ID v=数量 | 32 | Cards map[int]int // 每张卡集了多少张 k=卡牌ID v=数量 |
| 39 | Album map[int]int // 卡组奖励领取 k=卡组ID v=数量 | 33 | Album map[int]int // 卡组奖励领取 k=卡组ID v=数量 |
| 40 | StarSequenceScales map[string]int // 星级序列刻度 k=ID_用户序列_用户分组 v=刻度 | 34 | StarSequenceScales map[string]int // 星级序列刻度 k=ID_用户序列_用户分组 v=刻度 |
| @@ -45,17 +39,17 @@ type CardHolderDataDetails struct { | @@ -45,17 +39,17 @@ type CardHolderDataDetails struct { | ||
| 45 | AutoExchangeHolder []int // 活动切换时自动兑换的卡包列表 | 39 | AutoExchangeHolder []int // 活动切换时自动兑换的卡包列表 |
| 46 | } | 40 | } |
| 47 | 41 | ||
| 48 | -func NewCardHolderData(uid int64) *CardHolderData { | ||
| 49 | - d := &CardHolderData{ | 42 | +func NewDataCardHolder(uid int64) *DataCardHolder { |
| 43 | + d := &DataCardHolder{ | ||
| 50 | Uid: uid, | 44 | Uid: uid, |
| 51 | - Details: NewCardHolderDataDetails(), | 45 | + Details: NewDataCardHolderDetails(), |
| 52 | } | 46 | } |
| 53 | d.Encode() | 47 | d.Encode() |
| 54 | return d | 48 | return d |
| 55 | } | 49 | } |
| 56 | 50 | ||
| 57 | -func NewCardHolderDataDetails() *CardHolderDataDetails { | ||
| 58 | - return &CardHolderDataDetails{ | 51 | +func NewDataCardHolderDetails() *DataCardHolderDetails { |
| 52 | + return &DataCardHolderDetails{ | ||
| 59 | Cards: make(map[int]int), | 53 | Cards: make(map[int]int), |
| 60 | Album: make(map[int]int), | 54 | Album: make(map[int]int), |
| 61 | StarSequenceScales: make(map[string]int), | 55 | StarSequenceScales: make(map[string]int), |
| @@ -66,26 +60,26 @@ func NewCardHolderDataDetails() *CardHolderDataDetails { | @@ -66,26 +60,26 @@ func NewCardHolderDataDetails() *CardHolderDataDetails { | ||
| 66 | } | 60 | } |
| 67 | } | 61 | } |
| 68 | 62 | ||
| 69 | -func (d *CardHolderData) Init(uid int64) { | 63 | +func (d *DataCardHolder) Init(uid int64) { |
| 70 | d.Uid = uid | 64 | d.Uid = uid |
| 71 | d.CreateTime = lxtime.NowUninx() | 65 | d.CreateTime = lxtime.NowUninx() |
| 72 | } | 66 | } |
| 73 | 67 | ||
| 74 | // Encode 打包数据 | 68 | // Encode 打包数据 |
| 75 | -func (d *CardHolderData) Encode() { | 69 | +func (d *DataCardHolder) Encode() { |
| 76 | details, err := json.Marshal(d.Details) | 70 | details, err := json.Marshal(d.Details) |
| 77 | if err != nil { | 71 | if err != nil { |
| 78 | - lxalilog.Errors(err, "CardHolderData Encode Error", d.Uid, d.ActivityId) | 72 | + lxalilog.Errors(err, "DataCardHolder Encode Error", d.Uid, d.ActivityId) |
| 79 | return | 73 | return |
| 80 | } | 74 | } |
| 81 | d.DetailsText = string(details) | 75 | d.DetailsText = string(details) |
| 82 | } | 76 | } |
| 83 | 77 | ||
| 84 | // Decode 分包数据 | 78 | // Decode 分包数据 |
| 85 | -func (d *CardHolderData) Decode() { | 79 | +func (d *DataCardHolder) Decode() { |
| 86 | err := json.Unmarshal([]byte(d.DetailsText), d.Details) | 80 | err := json.Unmarshal([]byte(d.DetailsText), d.Details) |
| 87 | if err != nil { | 81 | if err != nil { |
| 88 | - lxalilog.Errors(err, "CardHolderData Decode Error", d.Uid, d.ActivityId) | 82 | + lxalilog.Errors(err, "DataCardHolder Decode Error", d.Uid, d.ActivityId) |
| 89 | return | 83 | return |
| 90 | } | 84 | } |
| 91 | } | 85 | } |
service/cardholder/init.go
| @@ -3,6 +3,7 @@ package cardholder | @@ -3,6 +3,7 @@ package cardholder | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/common/svconst" | 4 | "apigame/common/svconst" |
| 5 | "apigame/common/svdto" | 5 | "apigame/common/svdto" |
| 6 | + "apigame/common/svmysql" | ||
| 6 | ) | 7 | ) |
| 7 | 8 | ||
| 8 | func Init() { | 9 | func Init() { |
| @@ -10,7 +11,7 @@ func Init() { | @@ -10,7 +11,7 @@ func Init() { | ||
| 10 | // create table | 11 | // create table |
| 11 | // 卡牌卡包 | 12 | // 卡牌卡包 |
| 12 | for _, gameId := range svconst.GameListCardHolder { | 13 | for _, gameId := range svconst.GameListCardHolder { |
| 13 | - svdto.InitTable(new(CardHolderData), gameId) | 14 | + svmysql.InitTable(new(DataCardHolder), gameId) |
| 14 | svdto.InitTable(new(CardHolderRecordOpen), gameId) | 15 | svdto.InitTable(new(CardHolderRecordOpen), gameId) |
| 15 | svdto.InitTable(new(CardHolderRecordRewardAlbum), gameId) | 16 | svdto.InitTable(new(CardHolderRecordRewardAlbum), gameId) |
| 16 | svdto.InitTable(new(CardHolderRecordRewardRound), gameId) | 17 | svdto.InitTable(new(CardHolderRecordRewardRound), gameId) |
service/cardholder/logic.go
| @@ -2,6 +2,7 @@ package cardholder | @@ -2,6 +2,7 @@ package cardholder | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "apigame/common/svdto" | 4 | "apigame/common/svdto" |
| 5 | + "apigame/common/svmysql" | ||
| 5 | "apigame/configs" | 6 | "apigame/configs" |
| 6 | "apigame/models" | 7 | "apigame/models" |
| 7 | "apigame/service/constd" | 8 | "apigame/service/constd" |
| @@ -16,16 +17,16 @@ import ( | @@ -16,16 +17,16 @@ import ( | ||
| 16 | ) | 17 | ) |
| 17 | 18 | ||
| 18 | // SaveData 存储数据 | 19 | // SaveData 存储数据 |
| 19 | -func SaveData(gameId string, d *CardHolderData) { | 20 | +func SaveData(gameId string, d *DataCardHolder) { |
| 20 | d.UpdateTime = lxtime.NowUninx() | 21 | d.UpdateTime = lxtime.NowUninx() |
| 21 | d.Encode() | 22 | d.Encode() |
| 22 | 23 | ||
| 23 | - svdto.Save(d, gameId) | 24 | + _ = svmysql.Save(d, gameId) |
| 24 | } | 25 | } |
| 25 | 26 | ||
| 26 | -func _LoadData(gameId string, uid int64) (d *CardHolderData) { | ||
| 27 | - d = NewCardHolderData(uid) | ||
| 28 | - has, err := svdto.First(d, gameId) | 27 | +func _LoadData(gameId string, uid int64) (d *DataCardHolder) { |
| 28 | + d = NewDataCardHolder(uid) | ||
| 29 | + has, err := svmysql.First(d, gameId) | ||
| 29 | if err != nil { | 30 | if err != nil { |
| 30 | return | 31 | return |
| 31 | } | 32 | } |
| @@ -33,13 +34,13 @@ func _LoadData(gameId string, uid int64) (d *CardHolderData) { | @@ -33,13 +34,13 @@ func _LoadData(gameId string, uid int64) (d *CardHolderData) { | ||
| 33 | d.Decode() | 34 | d.Decode() |
| 34 | } else { | 35 | } else { |
| 35 | d.Init(uid) | 36 | d.Init(uid) |
| 36 | - svdto.Insert(d, gameId) | 37 | + _ = svmysql.Insert(d, gameId) |
| 37 | } | 38 | } |
| 38 | return | 39 | return |
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | // LoadData 获取数据 外部接口 | 42 | // LoadData 获取数据 外部接口 |
| 42 | -func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d *CardHolderData) { | 43 | +func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d *DataCardHolder) { |
| 43 | configId := config.Id | 44 | configId := config.Id |
| 44 | d = _LoadData(gameId, uid) | 45 | d = _LoadData(gameId, uid) |
| 45 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 | 46 | // 如果当前有上线活动(活动ID不为0),且活动ID和玩家数据不同,说明活动已切换 需更新 |
| @@ -50,7 +51,7 @@ func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d * | @@ -50,7 +51,7 @@ func LoadData(gameId string, uid int64, config *configs.CardActivityConfig) (d * | ||
| 50 | starCount := d.Details.StarCount | 51 | starCount := d.Details.StarCount |
| 51 | 52 | ||
| 52 | d.ActivityId = configId | 53 | d.ActivityId = configId |
| 53 | - d.Details = NewCardHolderDataDetails() | 54 | + d.Details = NewDataCardHolderDetails() |
| 54 | 55 | ||
| 55 | // 使用剩余的星星数来自动兑换卡包 | 56 | // 使用剩余的星星数来自动兑换卡包 |
| 56 | d.Details.LastStarCount = starCount | 57 | d.Details.LastStarCount = starCount |
| @@ -77,7 +78,7 @@ func CheckStatus(conf *configs.CardActivityConfig) string { | @@ -77,7 +78,7 @@ func CheckStatus(conf *configs.CardActivityConfig) string { | ||
| 77 | } | 78 | } |
| 78 | 79 | ||
| 79 | // CheckGameData 检查游戏数据 轮次等 | 80 | // CheckGameData 检查游戏数据 轮次等 |
| 80 | -func CheckGameData(d *CardHolderData, conf *configs.CardActivityConfig) string { | 81 | +func CheckGameData(d *DataCardHolder, conf *configs.CardActivityConfig) string { |
| 81 | if d.Details.Round > conf.Round { | 82 | if d.Details.Round > conf.Round { |
| 82 | return constd.RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR | 83 | return constd.RECODE_MERGE_CARDHOLDER_ROUNDFINISH_ERROR |
| 83 | } | 84 | } |
| @@ -120,7 +121,7 @@ func GetListFromArray(array []string, scale, count int) []string { | @@ -120,7 +121,7 @@ func GetListFromArray(array []string, scale, count int) []string { | ||
| 120 | } | 121 | } |
| 121 | 122 | ||
| 122 | // GetNewCard 按顺序查找数目最少的一张卡抽取 | 123 | // GetNewCard 按顺序查找数目最少的一张卡抽取 |
| 123 | -func GetNewCard(gameData *CardHolderData, conf *configs.CardActivityConfig) int { | 124 | +func GetNewCard(gameData *DataCardHolder, conf *configs.CardActivityConfig) int { |
| 124 | if len(conf.CardConfig) < 1 { | 125 | if len(conf.CardConfig) < 1 { |
| 125 | return 0 | 126 | return 0 |
| 126 | } | 127 | } |
| @@ -137,7 +138,7 @@ func GetNewCard(gameData *CardHolderData, conf *configs.CardActivityConfig) int | @@ -137,7 +138,7 @@ func GetNewCard(gameData *CardHolderData, conf *configs.CardActivityConfig) int | ||
| 137 | } | 138 | } |
| 138 | 139 | ||
| 139 | // CheckAlbumFinish 判断卡组是否已集齐 | 140 | // CheckAlbumFinish 判断卡组是否已集齐 |
| 140 | -func CheckAlbumFinish(albumId int, gameData *CardHolderData, config *configs.CardActivityConfig) bool { | 141 | +func CheckAlbumFinish(albumId int, gameData *DataCardHolder, config *configs.CardActivityConfig) bool { |
| 141 | for _, conf := range config.CardConfig { | 142 | for _, conf := range config.CardConfig { |
| 142 | if conf.SetId == albumId { | 143 | if conf.SetId == albumId { |
| 143 | count := gameData.Details.Cards[conf.Id] | 144 | count := gameData.Details.Cards[conf.Id] |
| @@ -150,7 +151,7 @@ func CheckAlbumFinish(albumId int, gameData *CardHolderData, config *configs.Car | @@ -150,7 +151,7 @@ func CheckAlbumFinish(albumId int, gameData *CardHolderData, config *configs.Car | ||
| 150 | } | 151 | } |
| 151 | 152 | ||
| 152 | // CheckRoundFinish 判断轮次是否已集齐(所有卡组集齐) | 153 | // CheckRoundFinish 判断轮次是否已集齐(所有卡组集齐) |
| 153 | -func CheckRoundFinish(gameData *CardHolderData, config *configs.CardActivityConfig) bool { | 154 | +func CheckRoundFinish(gameData *DataCardHolder, config *configs.CardActivityConfig) bool { |
| 154 | for _, conf := range config.AlbumConfig { | 155 | for _, conf := range config.AlbumConfig { |
| 155 | count := gameData.Details.Album[conf.SetId] | 156 | count := gameData.Details.Album[conf.SetId] |
| 156 | if count < 1 { | 157 | if count < 1 { |
| @@ -161,14 +162,14 @@ func CheckRoundFinish(gameData *CardHolderData, config *configs.CardActivityConf | @@ -161,14 +162,14 @@ func CheckRoundFinish(gameData *CardHolderData, config *configs.CardActivityConf | ||
| 161 | } | 162 | } |
| 162 | 163 | ||
| 163 | // HandleNextRound 处理轮次完成 星级序列刻度 卡牌序列刻度 | 164 | // HandleNextRound 处理轮次完成 星级序列刻度 卡牌序列刻度 |
| 164 | -func HandleNextRound(gameData *CardHolderData) { | 165 | +func HandleNextRound(gameData *DataCardHolder) { |
| 165 | gameData.Details.Round += 1 | 166 | gameData.Details.Round += 1 |
| 166 | gameData.Details.Cards = make(map[int]int) | 167 | gameData.Details.Cards = make(map[int]int) |
| 167 | gameData.Details.Album = make(map[int]int) | 168 | gameData.Details.Album = make(map[int]int) |
| 168 | } | 169 | } |
| 169 | 170 | ||
| 170 | // GetInfo 玩家卡牌活动信息 | 171 | // GetInfo 玩家卡牌活动信息 |
| 171 | -func GetInfo(gameData *CardHolderData, conf *configs.CardActivityConfig) models.CardHolderInfo { | 172 | +func GetInfo(gameData *DataCardHolder, conf *configs.CardActivityConfig) models.CardHolderInfo { |
| 172 | info := models.CardHolderInfo{ | 173 | info := models.CardHolderInfo{ |
| 173 | Cards: make(map[int]int), | 174 | Cards: make(map[int]int), |
| 174 | Album: make(map[int]int), | 175 | Album: make(map[int]int), |
| @@ -188,7 +189,7 @@ func GetInfo(gameData *CardHolderData, conf *configs.CardActivityConfig) models. | @@ -188,7 +189,7 @@ func GetInfo(gameData *CardHolderData, conf *configs.CardActivityConfig) models. | ||
| 188 | // DoOpen 封装的抽卡逻辑 | 189 | // DoOpen 封装的抽卡逻辑 |
| 189 | // openMode:开包类型0客户端驱动1星星商店购买2剩余星星兑换 | 190 | // openMode:开包类型0客户端驱动1星星商店购买2剩余星星兑换 |
| 190 | func DoOpen(gameId string, | 191 | func DoOpen(gameId string, |
| 191 | - gameData *CardHolderData, | 192 | + gameData *DataCardHolder, |
| 192 | config *configs.CardActivityConfig, | 193 | config *configs.CardActivityConfig, |
| 193 | confCardholder configs.OpenCardholderConfig, | 194 | confCardholder configs.OpenCardholderConfig, |
| 194 | sequenceId, cohort string, | 195 | sequenceId, cohort string, |
| @@ -251,7 +252,7 @@ func DoOpen(gameId string, | @@ -251,7 +252,7 @@ func DoOpen(gameId string, | ||
| 251 | 252 | ||
| 252 | // DoOpenCheckAward 封装的新卡判断是否出发卡组和轮次奖励的逻辑 | 253 | // DoOpenCheckAward 封装的新卡判断是否出发卡组和轮次奖励的逻辑 |
| 253 | func DoOpenCheckAward(gameId string, | 254 | func DoOpenCheckAward(gameId string, |
| 254 | - gameData *CardHolderData, | 255 | + gameData *DataCardHolder, |
| 255 | config *configs.CardActivityConfig, | 256 | config *configs.CardActivityConfig, |
| 256 | sequenceId, cohort string, | 257 | sequenceId, cohort string, |
| 257 | newCards []int, | 258 | newCards []int, |
| @@ -313,7 +314,7 @@ func DoOpenCheckAward(gameId string, | @@ -313,7 +314,7 @@ func DoOpenCheckAward(gameId string, | ||
| 313 | } | 314 | } |
| 314 | 315 | ||
| 315 | // CalculateStarCount 计算星星点数 | 316 | // CalculateStarCount 计算星星点数 |
| 316 | -func CalculateStarCount(gameData *CardHolderData, config *configs.CardActivityConfig) { | 317 | +func CalculateStarCount(gameData *DataCardHolder, config *configs.CardActivityConfig) { |
| 317 | starCount := 0 | 318 | starCount := 0 |
| 318 | for cardId, cardCount := range gameData.Details.Cards { | 319 | for cardId, cardCount := range gameData.Details.Cards { |
| 319 | if cardCount <= 1 { | 320 | if cardCount <= 1 { |
| @@ -335,7 +336,7 @@ func CalculateStarCount(gameData *CardHolderData, config *configs.CardActivityCo | @@ -335,7 +336,7 @@ func CalculateStarCount(gameData *CardHolderData, config *configs.CardActivityCo | ||
| 335 | } | 336 | } |
| 336 | 337 | ||
| 337 | // GetStarCardList 按照规则扣除星星数找到需要扣除的卡牌列表 | 338 | // GetStarCardList 按照规则扣除星星数找到需要扣除的卡牌列表 |
| 338 | -func GetStarCardList(gameData *CardHolderData, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { | 339 | +func GetStarCardList(gameData *DataCardHolder, config *configs.CardActivityConfig, needStar int) (enough bool, cardList map[int]int) { |
| 339 | enough = false | 340 | enough = false |
| 340 | cardList = make(map[int]int) | 341 | cardList = make(map[int]int) |
| 341 | starAmount := 0 | 342 | starAmount := 0 |
| @@ -404,7 +405,7 @@ func GetStarCardList(gameData *CardHolderData, config *configs.CardActivityConfi | @@ -404,7 +405,7 @@ func GetStarCardList(gameData *CardHolderData, config *configs.CardActivityConfi | ||
| 404 | } | 405 | } |
| 405 | 406 | ||
| 406 | // NextActivityAutoExchange 活动切换时自动兑换卡包 | 407 | // NextActivityAutoExchange 活动切换时自动兑换卡包 |
| 407 | -func NextActivityAutoExchange(gameId string, gameData *CardHolderData, config *configs.CardActivityConfig) { | 408 | +func NextActivityAutoExchange(gameId string, gameData *DataCardHolder, config *configs.CardActivityConfig) { |
| 408 | starCount := gameData.Details.LastStarCount | 409 | starCount := gameData.Details.LastStarCount |
| 409 | // 把星星的配置按照需要的星星数降序排列 | 410 | // 把星星的配置按照需要的星星数降序排列 |
| 410 | list := lo.Values[int, configs.StarShopConfig](config.StarShopConfig) | 411 | list := lo.Values[int, configs.StarShopConfig](config.StarShopConfig) |