code_config.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package data
  2. import (
  3. mhayaError "github.com/mhaya/error"
  4. "github.com/mhaya/game/game_cluster/internal/code"
  5. mhayaLogger "github.com/mhaya/logger"
  6. )
  7. type (
  8. codeRow struct {
  9. Code int32 `json:"code"` //提示代码
  10. Message string `json:"message"` //消息内容
  11. }
  12. // 状态码列表
  13. codeConfig struct {
  14. maps map[int32]*codeRow
  15. }
  16. )
  17. func (p *codeConfig) Name() string {
  18. return "codeConfig"
  19. }
  20. func (p *codeConfig) Init() {
  21. p.maps = make(map[int32]*codeRow)
  22. }
  23. func (p *codeConfig) OnLoad(maps interface{}, _ bool) (int, error) {
  24. list, ok := maps.([]interface{})
  25. if !ok {
  26. return 0, mhayaError.Error("maps convert to []interface{} error.")
  27. }
  28. codeMaps := make(map[int32]string)
  29. loadMaps := make(map[int32]*codeRow)
  30. for index, data := range list {
  31. loadConfig := &codeRow{}
  32. err := DecodeData(data, loadConfig)
  33. if err != nil {
  34. mhayaLogger.Warnf("decode error. [row = %d, %v], err = %s", index+1, loadConfig, err)
  35. continue
  36. }
  37. codeMaps[loadConfig.Code] = loadConfig.Message
  38. loadMaps[loadConfig.Code] = loadConfig
  39. }
  40. p.maps = loadMaps
  41. if len(codeMaps) > 0 {
  42. // TODO 把配置文件中状态码全部添加到code码中,这样方便获取
  43. code.AddAll(codeMaps)
  44. }
  45. return len(list), nil
  46. }
  47. func (p *codeConfig) OnAfterLoad(_ bool) {
  48. }
  49. func (p *codeConfig) Get(c int32) *codeRow {
  50. val, found := p.maps[c]
  51. if !found {
  52. return nil
  53. }
  54. return val
  55. }
  56. func (p *codeConfig) GetMessage(c int32) string {
  57. if val, found := p.maps[c]; found {
  58. return val.Message
  59. }
  60. return ""
  61. }