| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package serverdata
- import (
- "encoding/json"
- "sync"
- "time"
- "bet24.com/servers/adminserver/dao"
- "bet24.com/log"
- )
- func NewGameList() *GameList {
- obj := new(GameList)
- obj.lock = &sync.Mutex{}
- return obj
- }
- type GameList struct {
- games []dao.AllGameInfo
- lock *sync.Mutex
- }
- func (g *GameList) GetGames() *[]dao.AllGameInfo {
- g.lock.Lock()
- defer g.lock.Unlock()
- return &g.games
- }
- func (g *GameList) GetGameIds() []int {
- g.lock.Lock()
- defer g.lock.Unlock()
- gameIDList := []int{}
- for i := 0; i < len(g.games); i++ {
- gameIDList = append(gameIDList, g.games[i].GameID)
- }
- return gameIDList
- }
- //GetGameInfo 获取游戏信息
- func (g *GameList) GetGameInfo(GameID int) *dao.AllGameInfo {
- for i := 0; i < len(g.games); i++ {
- if g.games[i].GameID == GameID {
- return &g.games[i]
- }
- }
- return nil
- }
- type gameInfo struct {
- GameID int
- ChineseName string
- EnglishName string
- }
- //获取简单游戏信息(GameID、ChineseName)
- func (g *GameList) GetSimpleGames() []*gameInfo {
- var infoList []*gameInfo
- for _, val := range g.games {
- if val.Enabled != 1 && val.Enabled != 2 {
- continue
- }
- infoList = append(infoList, &gameInfo{
- GameID: val.GameID,
- ChineseName: val.EnglishName,
- EnglishName: val.EnglishName,
- })
- }
- return infoList
- }
- func (g *GameList) GetJson() string {
- g.lock.Lock()
- defer g.lock.Unlock()
- if len(g.games) <= 0 {
- return ""
- }
- retData, err := json.Marshal(g.games)
- if err != nil {
- log.Release("GameList GetJson Marshal failed")
- return ""
- }
- return string(retData)
- }
- func (g *GameList) run() {
- g.refreshData()
- }
- func (g *GameList) refreshData() {
- go g.doRefresh()
- time.AfterFunc(5*time.Minute, g.refreshData)
- }
- func (g *GameList) doRefresh() {
- getGameList := dao.NewGetAllGames()
- getGameList.In.GameID = 0
- getGameList.DoAction(nil)
- if len(getGameList.Out) > 0 {
- g.lock.Lock()
- g.games = getGameList.Out
- g.lock.Unlock()
- }
- }
- //立即刷新
- func (g *GameList) Refresh() {
- g.doRefresh()
- }
|