goProject/trunk/center/usercenter/internal/game/logic.go

78 lines
1.5 KiB
Go
Raw Normal View History

2025-01-06 16:01:02 +08:00
package game
import (
"common/cache"
"common/connection"
"goutil/logUtilPlus"
"sync"
2025-01-23 16:12:49 +08:00
. "usercenter/internal/user"
2025-01-06 16:01:02 +08:00
)
// 包名称(功能名称)
var packageName = "game"
// 读写锁
var lock sync.RWMutex
func AddGame(user *User, game *Game) (int64, error) {
//处理一些验证
//判断缓存是否存在
gameMap, _ := cache.GetData[map[int64]*Game](user.Cache, packageName)
if gameMap == nil {
gameMap = make(map[int64]*Game)
}
//添加新的缓存
func() {
lock.Lock()
defer lock.Unlock()
gameMap[game.GameID] = game
}()
//写入缓存
2025-01-23 16:12:49 +08:00
cache.SetData(user.Cache, packageName, gameMap)
2025-01-06 16:01:02 +08:00
// 写入到数据库
result := connection.GetUserDB().Create(&game) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户失败 错误信息:", result.Error.Error())
}
return game.GameID, nil
}
// 获取有些列表
func GetGameList(user *User) (map[int64]*Game, error) {
//处理一些验证
//验证缓存
gameMap, _ := cache.GetData[map[int64]*Game](user.Cache, packageName)
if gameMap != nil {
return gameMap, nil
}
// 获取全部列表
var gameList []*Game
result := connection.GetUserDB().Find(&gameList) // 通过数据的指针来创建
if result.Error != nil {
logUtilPlus.ErrorLog("添加用户失败 错误信息:", result.Error.Error())
}
for _, game := range gameList {
gameMap[game.GameID] = game
}
//添加缓存
func() {
lock.Lock()
defer lock.Unlock()
cache.SetData(user.Cache, packageName, gameMap)
}()
return gameMap, nil
}