78 lines
1.5 KiB
Go
78 lines
1.5 KiB
Go
|
|
package game
|
||
|
|
|
||
|
|
import (
|
||
|
|
"common/cache"
|
||
|
|
"common/connection"
|
||
|
|
"goutil/logUtilPlus"
|
||
|
|
. "logincenter/internal/user"
|
||
|
|
"sync"
|
||
|
|
)
|
||
|
|
|
||
|
|
// 包名称(功能名称)
|
||
|
|
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[*Game](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
|
||
|
|
}
|