area_server_config.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package data
  2. import (
  3. mhayaError "github.com/mhaya/error"
  4. mhayaLogger "github.com/mhaya/logger"
  5. )
  6. type (
  7. AreaServerRow struct {
  8. ServerId int32 `json:"serverId"` // 游戏服id
  9. ServerName string `json:"serverName"` // 游戏服名称
  10. AreaId int32 `json:"areaId"` // 游戏服所属的区id
  11. Status int32 `json:"status"` // 游戏服状态
  12. }
  13. // 游戏区分组
  14. areaServerConfig struct {
  15. maps map[int32]*AreaServerRow
  16. }
  17. )
  18. // Name 根据名称读取 ./config/data/areaServerConfig.json文件
  19. func (p *areaServerConfig) Name() string {
  20. return "areaServerConfig"
  21. }
  22. func (p *areaServerConfig) Init() {
  23. p.maps = make(map[int32]*AreaServerRow)
  24. }
  25. func (p *areaServerConfig) OnLoad(maps interface{}, _ bool) (int, error) {
  26. list, ok := maps.([]interface{})
  27. if !ok {
  28. return 0, mhayaError.Error("maps convert to []interface{} error.")
  29. }
  30. loadMaps := make(map[int32]*AreaServerRow)
  31. for index, data := range list {
  32. loadConfig := &AreaServerRow{}
  33. err := DecodeData(data, loadConfig)
  34. if err != nil {
  35. mhayaLogger.Warnf("decode error. [row = %d, %v], err = %s", index+1, loadConfig, err)
  36. continue
  37. }
  38. loadMaps[loadConfig.ServerId] = loadConfig
  39. }
  40. p.maps = loadMaps
  41. return len(list), nil
  42. }
  43. func (p *areaServerConfig) OnAfterLoad(_ bool) {
  44. }
  45. func (p *areaServerConfig) Get(pk int32) (*AreaServerRow, bool) {
  46. i, found := p.maps[pk]
  47. return i, found
  48. }
  49. func (p *areaServerConfig) Contain(pk int32) bool {
  50. _, found := p.Get(pk)
  51. return found
  52. }
  53. func (p *areaServerConfig) ListWithAreaId(areaId int32) []*AreaServerRow {
  54. var list []*AreaServerRow
  55. for _, row := range p.maps {
  56. if row.AreaId == areaId {
  57. list = append(list, row)
  58. }
  59. }
  60. return list
  61. }