gamelist.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package serverdata
  2. import (
  3. "encoding/json"
  4. "sync"
  5. "time"
  6. "bet24.com/servers/adminserver/dao"
  7. "bet24.com/log"
  8. )
  9. func NewGameList() *GameList {
  10. obj := new(GameList)
  11. obj.lock = &sync.Mutex{}
  12. return obj
  13. }
  14. type GameList struct {
  15. games []dao.AllGameInfo
  16. lock *sync.Mutex
  17. }
  18. func (g *GameList) GetGames() *[]dao.AllGameInfo {
  19. g.lock.Lock()
  20. defer g.lock.Unlock()
  21. return &g.games
  22. }
  23. func (g *GameList) GetGameIds() []int {
  24. g.lock.Lock()
  25. defer g.lock.Unlock()
  26. gameIDList := []int{}
  27. for i := 0; i < len(g.games); i++ {
  28. gameIDList = append(gameIDList, g.games[i].GameID)
  29. }
  30. return gameIDList
  31. }
  32. //GetGameInfo 获取游戏信息
  33. func (g *GameList) GetGameInfo(GameID int) *dao.AllGameInfo {
  34. for i := 0; i < len(g.games); i++ {
  35. if g.games[i].GameID == GameID {
  36. return &g.games[i]
  37. }
  38. }
  39. return nil
  40. }
  41. type gameInfo struct {
  42. GameID int
  43. ChineseName string
  44. EnglishName string
  45. }
  46. //获取简单游戏信息(GameID、ChineseName)
  47. func (g *GameList) GetSimpleGames() []*gameInfo {
  48. var infoList []*gameInfo
  49. for _, val := range g.games {
  50. if val.Enabled != 1 && val.Enabled != 2 {
  51. continue
  52. }
  53. infoList = append(infoList, &gameInfo{
  54. GameID: val.GameID,
  55. ChineseName: val.EnglishName,
  56. EnglishName: val.EnglishName,
  57. })
  58. }
  59. return infoList
  60. }
  61. func (g *GameList) GetJson() string {
  62. g.lock.Lock()
  63. defer g.lock.Unlock()
  64. if len(g.games) <= 0 {
  65. return ""
  66. }
  67. retData, err := json.Marshal(g.games)
  68. if err != nil {
  69. log.Release("GameList GetJson Marshal failed")
  70. return ""
  71. }
  72. return string(retData)
  73. }
  74. func (g *GameList) run() {
  75. g.refreshData()
  76. }
  77. func (g *GameList) refreshData() {
  78. go g.doRefresh()
  79. time.AfterFunc(5*time.Minute, g.refreshData)
  80. }
  81. func (g *GameList) doRefresh() {
  82. getGameList := dao.NewGetAllGames()
  83. getGameList.In.GameID = 0
  84. getGameList.DoAction(nil)
  85. if len(getGameList.Out) > 0 {
  86. g.lock.Lock()
  87. g.games = getGameList.Out
  88. g.lock.Unlock()
  89. }
  90. }
  91. //立即刷新
  92. func (g *GameList) Refresh() {
  93. g.doRefresh()
  94. }