errormsg.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package errormsg
  2. import (
  3. "encoding/json"
  4. _ "fmt"
  5. "log"
  6. "os"
  7. "sync"
  8. "time"
  9. )
  10. var Instance *errormsg
  11. func Run() {
  12. Instance = new(errormsg)
  13. Instance.lock = &sync.RWMutex{}
  14. Instance.run()
  15. }
  16. func GetErrorMsg(msg string, ret_code int) string {
  17. Instance.lock.RLock()
  18. defer Instance.lock.RUnlock()
  19. for _, v := range Instance.Msgs {
  20. if v.Msg == msg {
  21. return v.getMsg(ret_code)
  22. }
  23. }
  24. return ""
  25. }
  26. type error_code struct {
  27. RetCode int
  28. ErrorMsg string
  29. }
  30. type msg struct {
  31. Msg string
  32. ErrorCodes []error_code
  33. }
  34. func (m *msg) getMsg(ret_code int) string {
  35. for _, v := range m.ErrorCodes {
  36. if v.RetCode == ret_code {
  37. return v.ErrorMsg
  38. }
  39. }
  40. return ""
  41. }
  42. type errormsg struct {
  43. Msgs []msg
  44. lock *sync.RWMutex
  45. }
  46. func (e *errormsg) run() {
  47. e.refreshData()
  48. }
  49. func (e *errormsg) refreshData() {
  50. go e.doRefresh()
  51. time.AfterFunc(5*time.Minute, e.refreshData)
  52. }
  53. func (e *errormsg) doRefresh() {
  54. e.lock.Lock()
  55. defer e.lock.Unlock()
  56. data, err := os.ReadFile("fishconf/errormsg.json")
  57. if err != nil {
  58. log.Fatalf("read config failed fishconf/errormsg.json %v", err)
  59. }
  60. //fmt.Println(string(data))
  61. err = json.Unmarshal(data, &e.Msgs)
  62. if err != nil {
  63. log.Fatalf("Unmarshal config failed fishconf/errormsg.json err:%v", err)
  64. }
  65. //fmt.Printf("Msgs count = %d\n", len(e.Msgs))
  66. }