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