package game import ( "common/cache" "common/connection" "goutil/logUtilPlus" "sync" . "usercenter/internal/user" ) // 包名称(功能名称) 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 }() //写入缓存 cache.SetData(user.Cache, packageName, gameMap) // 写入到数据库 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 }